我有一个十六进制数组缓冲区[]。从eclipse中,我可以看到这些值以以下形式存储在数组中:
['\x03', '\x9f', '\x04', '\x9f']
我想切掉它的\ x部分,只想将数组作为(十六进制数组):
[03, 9f, 04, 9f]
我尝试了格式选项:
hex(buffer[0][2:])
仅检查它是否已格式化,但不是。将整个数组转换为我期望的输出格式有帮助吗?
答案 0 :(得分:1)
尝试一下:
buffer = ['\x03', '\x9f', '\x04', '\x9f']
output = ['%02x' % ord(x[0]) for x in buffer]
print(output) # ['03', '9f', '04', '9f']
原始列表中的元素是一字符字符串。要获取其十六进制char值,请使用ord()
并使用%x
进行格式化。
答案 1 :(得分:1)
l = ['\x03', '\x9f', '\x04', '\x9f']
print(['{:02x}'.format(ord(i)) for i in l])
这将输出:
['03', '9f', '04', '9f']
答案 2 :(得分:0)
编码数组的每个值:
arr = ['\x03', '\x9f', '\x04', '\x9f']
map(lambda x: x.encode('hex'), arr)
# ['03', '9f', '04', '9f']
答案 3 :(得分:0)
您的缓冲区是一个字符列表。例如,“ \ x03”是顺序值为0x03的字符。
以下是获取所需输出的方法:
b = ['\x03', '\x9f', '\x04', '\x9f']
result = [format(ord(i), "02x") for i in b]