如何动态创建单个字符十六进制值?
例如,我试过
a = "ff"
"\x{0}".format(a)
和
a = "ff"
"\x" + a
我最终在寻找像
这样的东西\xff
但是,上述两种组合似乎都不起作用。
此外,我最初使用chr
来获取整数的单个字符十六进制表示,但我注意到chr(63)
将返回?
(因为这是它的ascii表示)。
除chr
之外还有另一个函数会将chr(63)
作为\x_ _
返回,其中_ _
是其单字符十六进制表示吗?换句话说,只生成单个字符十六进制表示的函数。
答案 0 :(得分:3)
当你说\x{0}
时,Python会转义x
并认为接下来的两个字符是十六进制小数字符,但它们实际上不是。请参阅表格here。
\xhh Character with hex value hh (4,5)
4。与标准C不同,只需要两个十六进制数字。
5。在字符串文字中,十六进制和八进制转义表示具有给定值的字节;字节不必编码源字符集中的字符。在Unicode文字中,这些转义表示具有给定值的Unicode字符。
所以,你必须在\
中逃避\x
,就像这样
print "\\x{0}".format(a)
# \xff
答案 1 :(得分:2)
使用str.decode
编码尝试'hex'
:
In [204]: a.decode('hex')
Out[204]: '\xff'
此外,chr
返回单字符串字符串,您无需担心此字符串的输出:
In [219]: c = chr(31)
In [220]: c
Out[220]: '\x1f'
In [221]: print c #invisible printout
In [222]: