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

在python中将0x字符串解释为十六进制

  •  3
  • soulseekah  · 技术社区  · 14 年前

    我正在将一些十六进制字节附加到 packet = [] 我想返回这些十六进制字节 0x__ 作为十六进制数据。

    packet.append("2a")
    packet.append("19")
    packet.append("00")
    packet.append("00")
    
    packHex = []
    
    for i in packet:
        packHex.append("0x"+i) #this is wrong
    
    return packHex
    

    我该怎么转换呢 ('2a', '19', '00', '00') 在里面 packet 得到 (0x2a, 0x19, 0x0, 0x0) 在里面 packHex ?我需要真正的十六进制数据,而不是看起来像十六进制数据的字符串。

    我正在整理一个寄过去的包裹 pcap , pcap_sendpacket(fp,packet,len(data)) 在哪里? 小包裹 对于我来说应该是十六进制的列表或元组,也许可以用十进制来完成,还没试过,我更喜欢十六进制。谢谢你的回答。

    packetPcap[:len(data)] = packHex

    解决了的:

    for i in packet: packHex.append(int(i,16))

    如果需要十六进制输出,可以使用以下命令: print ",".join(map(hex, packHex))

    3 回复  |  直到 9 年前
        1
  •  3
  •   MAK    14 年前

    list int "%x"%value hex

    >>> int('0x'+'2a',16)
    42
    >>> packet=["2a","19","00","00"]
    >>> packet=[int(p,16) for p in packet]
    >>> packet
    [42, 25, 0, 0]
    >>> print ", ".join(map(hex,packet))
    0x2a, 0x19, 0x0, 0x0
    
        2
  •  5
  •   Mark Byers    14 年前

    [int(x, 16) for x in packet]
    

    tuple(int(x, 16) for x in packet)
    
        3
  •  -1
  •   Clark    9 年前

    list = ["2a", "19", "00", "00"]

    list = [hex(int(i, 16)) for i in vals]

    >>>['0x2a', '0x19', '0x0', '0x0']