繁体   English   中英

在python中打印十六进制字符串

[英]Printing hexadecimal string in python

我在使用x86,小端。 所以我从udp数据包中获得了这些数据。

data, addr = sock.recvfrom(1024)

print(data) 

给出类似'\\xfe\\x15'

我知道这是内存中的小端布局。

该值应表示为0x15fe

在C我愿意

printf("%x", hexvalue); 

它使我立即获得0x15fe。

如何获取Python以正确打印出十六进制值?

非常感谢。

您可以使用struct将字节字符串转换为int,如下所示:

>>> data = b'\xfe\x15'
>>> num, = struct.unpack('<h', data)

在此<h表示一个低字节序的2字节有符号整数。 如果您的数据未签名,请使用<H 查看文档以获取更多信息。

然后,您可以使用print(hex(num))或类似方法进行print(hex(num))

>>> print(hex(num))
0x15fe

作为附带说明,请记住sock.recvfrom(1024)可能返回多于或少于2个字节。 解析时要考虑到这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM