在Python中创建\ x单个字符十六进制值

时间:2014-03-11 03:05:26

标签: python

如何动态创建单个字符十六进制值?

例如,我试过

a = "ff"
"\x{0}".format(a)

a = "ff"
"\x" + a

我最终在寻找像

这样的东西
\xff

但是,上述两种组合似乎都不起作用。

此外,我最初使用chr来获取整数的单个字符十六进制表示,但我注意到chr(63)将返回?(因为这是它的ascii表示)。

chr之外还有另一个函数会将chr(63)作为\x_ _返回,其中_ _是其单字符十六进制表示吗?换句话说,只生成单个字符十六进制表示的函数。

2 个答案:

答案 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]: