sou*_*kah 3 python types casting
我将一些十六进制字节附加到a中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
Run Code Online (Sandbox Code Playgroud)
我该如何去有关转换('2a', '19', '00', '00')中packet得到(0x2a, 0x19, 0x0, 0x0)的packHex?我需要真正的十六进制数据,而不是十六进制数据的字符串.
我正在组装一个要发送的数据包pcap,pcap_sendpacket(fp,packet,len(data))其中packet应该是十六进制列表或元组,也许它可以用十进制表示,没有尝试过,我更喜欢十六进制.谢谢您的回答.
packetPcap[:len(data)] = packHex
解决了:
for i in packet: packHex.append(int(i,16))
如果需要以十六进制输出,则可以使用此命令:
print ",".join(map(hex, packHex))
你真的不想要'十六进制数据',你想要整数.只有将数字表示为字符串时,十六进制表示法才有意义.
要解决您的问题,请使用列表解析:
[int(x, 16) for x in packet]
Run Code Online (Sandbox Code Playgroud)
或者将结果作为元组获得:
tuple(int(x, 16) for x in packet)
Run Code Online (Sandbox Code Playgroud)