将整数转换为十六进制转义字符串的最有效方法是什么?
0->'\ x00'
15->'\ x0f'
0xdeadbeef->'\ xde \限制\ xbe \ xef'
没有办法直接做自己想做的事,但是做自己并不难。
例如,您可以将整个int转换为十六进制,然后\x
在每对字符之前插入一个字符:
n = 0xdeadbeef
x = format(n, 'x')
s = re.sub('(..)', r'\\x\1', x)
# or s = ''.join(r'\x{}{}'.format(*b) for b in pairwise(x))
# or s = ''.join(r'\x' + x[i:i+2] for i in range(0, len(x), 2))
或者,您可以一次提取一个字节并自行格式化它们:
x = []
while n:
x.append(n % 256)
n //= 256
s = ''.join(r'\x{:02x}'.format(b) for b in reversed(x))
哪个是最Pythonic的?我认为它们都很简单,以至于如果将它们包装在一个具有适当名称的函数中,没有人会抱怨,但是都非常复杂,以至于只要将它们内联到代码中,它就不会是pythonic了。(我个人使用该pairwise
版本,只是因为我总是itertools
首先想到,但这就是我。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句