我在我的套接字上收到一个 4 字节的值,我想将其打印为十六进制值。我在尝试:
print "%08x" % (nonce)
但是,我收到一条错误消息,指出字符串无法转换为十六进制。有人知道如何快速解决这个问题吗?
我在我的套接字上收到一个 4 字节的值,我想将其打印为十六进制值。我在尝试:
print "%08x" % (nonce)
但是,我收到一条错误消息,指出字符串无法转换为十六进制。有人知道如何快速解决这个问题吗?
使用该struct
模块将从网络接收到的八位字节解包为实际数字。该%08x
格式将适用于数字:
import struct
n, = struct.unpack('>I', nonce)
print "%08x" % n
如果您的数据可以转换为字符串,则可以使用以下str.encode()
方法:
>>> s = "XYZ"
>>> s.encode('hex')
'58595a'
您很可能有一个包含字节的字符串。但是,要将它们打印为数字,您需要......一个数字。
您可以像这样轻松创建所需的十六进制字符串:
''.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'
另一种选择是:
from binascii import hexlify
>>> hexlify('a1n4')
'61316e34'
num = "9999"
print hex(int(num))
#0x270f