如何修剪数组元素的\ x部分?

时间:2018-08-20 02:53:00

标签: python arrays list

我有一个十六进制数组缓冲区[]。从eclipse中,我可以看到这些值以以下形式存储在数组中:

['\x03', '\x9f', '\x04', '\x9f']

我想切掉它的\ x部分,只想将数组作为(十六进制数组):

[03, 9f, 04, 9f]

我尝试了格式选项:

hex(buffer[0][2:])

仅检查它是否已格式化,但不是。将整个数组转换为我期望的输出格式有帮助吗?

4 个答案:

答案 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]