在Python中str到十六进制

时间:2012-11-23 12:37:01

标签: python

我在套接字上收到一个4字节值,我想打印为十六进制值。我在尝试:

 print "%08x" % (nonce)

但是,我收到一条错误消息,指出字符串无法转换为十六进制。任何人都有想法 如何快速解决这个问题?

5 个答案:

答案 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'