当我持有十六进制格式的字符串而不编码字符串时?

2024-05-19 01:13:48 发布

您现在位置:Python中文网/ 问答频道 /正文

一般的问题是,我需要十六进制字符串保持这种格式来将其分配给变量,而不是保存编码?在

不好:

>>> '\x61\x74'
'at'
>>> a = '\x61\x74'
>>> a
'at'

效果不错,但不如:

^{2}$

Tags: 字符串编码格式at效果x61x74
2条回答

使用r前缀(explained on SO

a = r'\x61\x74'
b = '\x61\x74'
print (a) #prints  \x61\x74
print (b) # prints at

它是相同的数据。Python允许您使用不同的方法指定文本字符串,其中一种方法是使用转义码来表示字节。在

因此,'\x61''a'是相同的字符值。Python只是选择将可打印的ASCII字符显示为可打印的ASCII字符,而不是转义代码,因为这使得使用bytestrings更加容易。在

如果需要文本斜杠、x字符和两位数61字符(因此字符串长度为4),则需要将斜杠加倍或使用原始字符串。在

举例说明:

>>> '\x61' == 'a'  # two notations for the same value
True
>>> len('\x61')    # it's just 1 character
1
>>> '\\x61'        # escape the escape
'\\x61'
>>> r'\x61'        # or use a raw literal instead
'\\x61'
>>> len('\\x61')   # which produces 4 characters
4

相关问题 更多 >

    热门问题