Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何修剪数组元素的\x部分?_Python_Arrays_List - Fatal编程技术网

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

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'

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

['\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]