如何将int转换为hexstring?

我想要一个整数(这将是<= 255),以hexstring表示

例如:我想传入65 ,得到'\x41' ,或者255 ,得到'\xff'

我试着用struct.pack('c', 65 )来做这struct.pack('c', ,但是因为它想要取一个单一的string,所以在9以上的任何东西都会被扼杀。

您正在寻找chrfunction。

你似乎混合了整数和hex整数的十进制表示forms,所以不清楚你需要什么。 根据你给出的描述,我认为这些片段之一显示你想要的。

 >>> chr(0x65) == '\x65' True >>> hex(65) '0x41' >>> chr(65) == '\x41' True 

请注意,这与包含hex整数的string完全不同。 如果这是你想要的,使用hex内build。

这将把一个整数转换为一个2位数的hexstring,其前缀为0x:

 strHex = "0x%0.2X" % 255 

尝试:

 "0x%x" % 255 # => 0xff 

要么

 "0x%X" % 255 # => 0xFF 

Python文档说:“把它放在你的枕头下: http : //docs.python.org/library/index.html ”

那么hex()呢?

 hex(255) # 0xff 

如果你真的想要在前面,你可以这样做:

 print '\\' + hex(255)[1:] 

如果你想打包一个值<255(一个字节无符号,uint8_t)的结构,并以一个string结束,你可能正在寻找格式B而不是c 。 C将字符转换为string(本身不太有用),而B转换整数。

 struct.pack('B', 65) 

(是的,65是\ x41,而不是\ x65。)

struct类也可以方便地处理通讯或其他用途的字节顺序。

我想要一个随机整数转换成一个六位hexstring与开始#。 为了得到这个我用

 "#%6x" % random.randint(0xFFFFFF) 

这对我来说最合适

 "0x%02X" % 5 # => 0x05 "0x%02X" % 17 # => 0x11 

更改(2)如果你想要一个更宽的数字(2是2hex打印字符),所以3会给你以下

 "0x%03X" % 5 # => 0x005 "0x%03X" % 17 # => 0x011 

请注意,对于较大的值, hex()仍然有效(其他答案不):

 x = hex(349593196107334030177678842158399357) print(x) 

Python 2: 0x4354467b746f6f5f736d616c6c3f7dL
Python 3: 0x4354467b746f6f5f736d616c6c3f7d

对于解密的RSA消息,可以执行以下操作:

 import binascii hexadecimals = hex(349593196107334030177678842158399357) print(binascii.unhexlify(hexadecimals[2:-1])) # python 2 print(binascii.unhexlify(hexadecimals[2:])) # python 3 

让我添加这个,因为有时候你只想要单个数字的表示forms:

 '{:x}'.format(15) > f 

作为替代表示,你可以使用

 [in] '%s' % hex(15) [out]'0xf'