如何将int转换为hexstring?
我想要一个整数(这将是<= 255),以hexstring表示
例如:我想传入65
,得到'\x41'
,或者255
,得到'\xff'
。
我试着用struct.pack('c',
65 )
来做这struct.pack('c',
,但是因为它想要取一个单一的string,所以在9
以上的任何东西都会被扼杀。
您正在寻找chr
function。
你似乎混合了整数和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'