Python 如何修剪数组元素的\x部分?
我有一个十六进制数组缓冲区[]。从eclipse中,我可以看到这些值存储在数组中,如下所示:Python 如何修剪数组元素的\x部分?,python,arrays,list,Python,Arrays,List,我有一个十六进制数组缓冲区[]。从eclipse中,我可以看到这些值存储在数组中,如下所示: ['\x03', '\x9f', '\x04', '\x9f'] 我想剪切它的\x部分,只希望数组为(十六进制数组): 我尝试了格式选项: hex(buffer[0][2:]) 只是为了检查它是否正在格式化,但它没有。要将整个阵列转换为我期望的输出格式,有什么帮助吗?请尝试以下操作: buffer = ['\x03', '\x9f', '\x04', '\x9f'] output = ['%02x'
['\x03', '\x9f', '\x04', '\x9f']
我想剪切它的\x部分,只希望数组为(十六进制数组):
我尝试了格式选项:
hex(buffer[0][2:])
只是为了检查它是否正在格式化,但它没有。要将整个阵列转换为我期望的输出格式,有什么帮助吗?请尝试以下操作:
buffer = ['\x03', '\x9f', '\x04', '\x9f']
output = ['%02x' % ord(x[0]) for x in buffer]
print(output) # ['03', '9f', '04', '9f']
原始列表中的元素是单字符字符串。要获取其十六进制字符值,请使用ord()
并使用%x
格式化
l = ['\x03', '\x9f', '\x04', '\x9f']
print(['{:02x}'.format(ord(i)) for i in l])
这将产生:
['03', '9f', '04', '9f']
对数组的每个值进行编码:
arr = ['\x03', '\x9f', '\x04', '\x9f']
map(lambda x: x.encode('hex'), arr)
# ['03', '9f', '04', '9f']
缓冲区是一个字符列表。例如,“\x03”是序号值为0x03的字符 以下是如何获得您想要的输出:
b = ['\x03', '\x9f', '\x04', '\x9f']
result = [format(ord(i), "02x") for i in b]
[03,9f,04,9f]
不是有效的Python文本。您的意思是['03','9f','04','9f']
,这是一个字符串列表?是否可以将此字符列表转换为十六进制?例如,到一个[03,9f,04,9f]的数组?如果你想将列表简单地转换为[0x03,0x9f,0x04,0x9f]
,那么你所需要的就是得到每个字符的序数值,其中有:[ord(i)代表l中的i]
我不能有一个十六进制数组吗?对于ord(),它将值存储为整数。。例如,十六进制值85存储为133。不,您不能。必须将十六进制存储为字符串;否则它们只存储为整数。@user5105767使用循环一次检索2个元素,将第二个元素乘以256,再加上第一个元素,就得到了它。不难想象是否可以将这个字符列表转换为十六进制?例如,对于[03,9f,04,9f]的数组,是否可以将此字符列表转换为十六进制?即,到[03,9f,04,9f]的数组?
b = ['\x03', '\x9f', '\x04', '\x9f']
result = [format(ord(i), "02x") for i in b]