我有这个字符串"\x00\x12\xf8\x05\x74\xa2"
,结果如下:
>>> s = "\x00\x12\xf8\x05\x74\xa2"
>>> s
'\x00\x12\xf8\x05t\xa2'
>>> print s
?t?
>>> print repr(s)
'\x00\x12\xf8\x05t\xa2'
>>> s = r"\x00\x12\xf8\x05\x74\xa2" <=== (I want this result but cannot use r'')
>>> s
'\\x00\\x12\\xf8\\x05\\x74\\xa2'
>>> print s
\x00\x12\xf8\x05\x74\xa2
您可以看到字符串中的'\x74'
在前半部分输出中自动转换为相应的utf8字符't'
。我实际上有一个自定义字典来进行解码,所以我不希望这种自动转换。
最好是在后半部分输出中保持字符串与r'string'
相同。显然repr
不起作用,还有其他办法吗?
更新:我想要这个,因为我需要将hh
中的\xhh
转换为整数。
提前致谢。
答案 0 :(得分:3)
更新:我想要这个,因为我需要将每个\ xhh中的hh转换为 int number。
>>> s = "\x00\x12\xf8\x05\x74\xa2"
>>> [ord(x) for x in list(s)]
[0, 18, 248, 5, 116, 162]
答案 1 :(得分:3)
我想要这个,因为我需要将每个\ xhh中的hh转换为int 号。
In [17]: s = "\x00\x12\xf8\x05\x74\xa2"
In [18]: list(bytearray(s))
Out[18]: [0, 18, 248, 5, 116, 162]
关于字节数组的使用的This article可能是您感兴趣的。
答案 2 :(得分:1)
您可以手动创建所需的表示形式,如下所示:
>>> s = '\x00\x12\xf8\x05\x74\xa2'
>>> r = ''.join(['\\x%02x' % ord(b) for b in s])
>>> r
'\\x00\\x12\\xf8\\x05\\x74\\xa2'
>>> print r
\x00\x12\xf8\x05\x74\xa2
根据您的更新,如果您只想要ord
值,请删除原始答案的一小部分:
>>> [ord(b) for b in s]
[0, 18, 248, 5, 116, 162]