我在套接字上收到一个4字节值,我想打印为十六进制值。我在尝试:
print "%08x" % (nonce)
但是,我收到一条错误消息,指出字符串无法转换为十六进制。任何人都有想法 如何快速解决这个问题?
答案 0 :(得分:3)
使用struct
模块将从网络接收的八位字节解压缩为实际数字。 %08x
格式适用于数字:
import struct
n, = struct.unpack('>I', nonce)
print "%08x" % n
答案 1 :(得分:0)
你很可能有一个包含字节的字符串。但是,要将它们打印为数字,您需要一个数字。
您可以轻松地创建您正在寻找的十六进制字符串:
''.join('%02x' % ord(x) for x in nonce)
演示:
>>> nonce = os.urandom(4)
>>> nonce
'X\x19e\x07'
>>> ''.join('%02x' % ord(x) for x in nonce)
'58196507'
答案 2 :(得分:0)
另一种选择是:
from binascii import hexlify
>>> hexlify('a1n4')
'61316e34'
答案 3 :(得分:0)
num = "9999"
print hex(int(num))
#0x270f
答案 4 :(得分:0)
如果您的数据可以转换为字符串,则可以使用str.encode()
方法:
>>> s = "XYZ"
>>> s.encode('hex')
'58595a'