首页 > 解决方案 > 将包含字节数组的字符串转换为 uint16

问题描述

我有一个大字节数组,我存储到一个文件中,用于后处理。对于这个例子,我们假设数据是一个从 0 到 3 以 10 为底的计数器。

我从某种方法中检索数据的格式是字节数组,我需要有效地存储它,因为模拟需要大量数据集。因此我将其存储为

f=open('data_0.txt','w')
f.write(str(b_a))
f.close()

当我阅读它时,我得到一串数据:data_read = b'\x00\x00\x01\x00\x02\x00\x03\x00'

f=open('data_0.txt')
data_read = f.read()
f.close()

我希望一个函数获取字符串:b'\x00\x00\x01\x00\x02\x00\x03\x00'并将其转换为[0, 1, 2, 3].

当我使用时,struct.unpack("BBBBBBBB" , data_read)我希望0,0,1,0,2,0,3,0它只显示 b、'、\、x 等的 ascii,对于 等,它是相同ord(0)ord(1)

是否有任何方便的函数或pythonic方式从字符串中获取: b'\x00\x00\x01\x00\x02\x00\x03\x00'并将其转换为数组[0, 1, 2, 3]

标签: pythonarraysdata-conversion

解决方案


You need to use shorts or unsigned shorts:)

>>> import struct
>>> data_read
b'\x00\x00\x01\x00\x02\x00\x03\x00'
>>> struct.unpack("hhhh" , data_read)
(0, 1, 2, 3)
>>> struct.unpack("HHHH" , data_read)
(0, 1, 2, 3)

推荐阅读