我不确定你想如何获取十六进制值之后的整数......它们应该是 1、2 还是x位?
所以,我这样做:
import re
# convert unicode or string to raw
def raw(s):
if isinstance(s, str):
s = s.encode('string-escape')
elif isinstance(s, unicode):
s = s.encode('unicode-escape')
return s
s = '\x1e\x00\x00\x00\xf0\x0f184203308373388492761797873987'
print [ re.sub(r'\\', r'0', raw(i)) for i in s]
我明白了:
['0x1e', '0x00', '0x00', '0x00', '0xf0', '0x0f', '1', '8', '4', '2', '0', '3', '3', '0', '8', '3', '7', '3', '3', '8', '8', '4', '9', '2', '7', '6', '1', '7', '9', '7', '8', '7', '3', '9', '8', '7']
希望能有所帮助
编辑:简化列表理解
编辑:如果您确实想摆脱非十六进制值,那么您可以使用
>>> print [int(re.sub(r'\\', r'0', raw(i)), 16) for i in s if len(raw(i))>1]
[30, 0, 0, 0, 240, 15]
并比较......甚至更好,正如帝斯曼所说
>>> s = '\x1e\x00\x00\x00\xf0\x0f184203308373388492761797873987'
>>> ord(max(s))
240