簡體   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