代码之家  ›  专栏  ›  技术社区  ›  NetworkStudent

如何将integer的python列表转换为hex列表,获取列表错误“结构错误:必需参数不是整数“

  •  -1
  • NetworkStudent  · 技术社区  · 6 年前

    a=[0,1] 我想改变 a=[0x00,0x001] 键入。我该怎么做?我试过这样

    print (struct.pack('>h',a))
    

    但我不能换成巫术

    5 回复  |  直到 6 年前
        1
  •  2
  •   Siong Thye Goh sara    6 年前

    直接使用十六进制应该可以:

    >>> a = [0,1]
    >>> a = [hex(i) for i in a]
    >>> a
    ['0x0', '0x1']
    
        2
  •  2
  •   Patrick Artner    6 年前

    使用 hex(...)

    print( [hex(i) for i in [0,1]])  #  ['0x1', '0x2']
    

    format(...) zfill() 所需数量的零和前置 '0x'

    data = [0,1]
    
    as_hex = [ "0x" + format(e,"x").zfill(2) for e in data]
    
    print(as_hex)
    

    输出:

    ['0x00', '0x01']
    
        3
  •  1
  •   glglgl John Dvorak    6 年前

    当你无法描述你想要的结果时,我只能猜测:

    1. 那么,使用哪种格式并不重要,只要使用正确的格式字符串,这两种格式都应该可以工作:

      a = [1, 2]
      b = [0x01, 0x02]
      struct.pack(">hh", *a)
      # > '\x00\x01\x00\x02'
      struct.pack(">hh", *b)
      # > '\x00\x01\x00\x02'
      

      a b 是平等的:你是否写作并不重要 1 2 或者如果你愿意 0x01 负责人。 0x02 . 请注意,显示的字符串只是分别包含值为0、1和2的特殊字符的字符串的表示。

    2. 要以十六进制表示输出数字吗?

      在这种情况下,请参阅其他答案。

        4
  •  0
  •   Iván B.    6 年前

    a=[0,1]
    print(map(hex,a))
    # Output
    # ['0x0', '0x1']
    
        5
  •  0
  •   Lavanya Pant    6 年前

    下面是将整数列表转换为十六进制列表的另一种方法

    a = [0,1]
    b = map(hex, a) 
    # or 
    b = map(lambda x:hex(x), a)
    # output
    print b
    ['0x1', '0x2']