python - 将包含字节数组的字符串转换为 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]
?
解决方案
You need to use short
s or unsigned short
s:)
>>> 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)
推荐阅读
- .net - 问题:所有用户都访问同一个 Google Drive 帐户
- google-bigquery - 在 Data Studio 中将我的原始数据源显示为表格
- java - 使用正则表达式查找捕获组的所有组合
- ruby-on-rails - 在 Rails-UJS 中获取 AJAX 复选框值
- java - Android Studio AlarmManager.cancel() 关闭应用
- jquery - 为什么我的 jQuery 进度条缺少一个段?
- bash - Bash - 文件名中的版本号。如何仅列出最新版本?
- php - 未定义的属性??(PHP)(PMMP)
- python - 如何将列表的值插入嵌套列表?
- vba - 如果 2 个不同的用户在 VBA 中同时运行一个进程,如何防止该进程运行两次?