如何在python中解压使用Swift保存的二进制数据?
我已将一个双精度数组保存为二进制文件 斯威夫特先生如何在python中解压使用Swift保存的二进制数据?,python,swift,binary,endianness,Python,Swift,Binary,Endianness,我已将一个双精度数组保存为二进制文件 斯威夫特先生 val items: [Double] = ... if let outputStream = OutputStream(url: getFileUrl(), append: true) { outputStream.open() items.withUnsafeBytes { let byteArray: [UInt8] = Array($0) outputStream.write(byteAr
val items: [Double] = ...
if let outputStream = OutputStream(url: getFileUrl(), append: true) {
outputStream.open()
items.withUnsafeBytes {
let byteArray: [UInt8] = Array($0)
outputStream.write(byteArray, maxLength: byteArray.count)
}
outputStream.close()
}
我现在正试图用python处理这些原始文件。如何使用python将这些字节读回双数组
process.py
导入结构
f = open("data.bin", "rb")
try:
byte = True
while byte != "":
byte_arr = f.read(8)
print(byte_arr)
print(len(byte_arr))
U = struct.unpack("4H", byte_arr)
print(U)
# print(unpack_from(byte_arr))
finally:
f.close()
使用“d”有什么不对?为什么要使用表示“4个未签名的短字符”的
4H
,来读取双精度?同时,这里的“array”到底是什么意思?如果您想要一个列表,您可能需要将每个值附加到该列表中。如果您想要一个数组.array
或一个NumPy数组,您可能不想执行任何操作,而只想使用fromfile
或类似的函数来执行。这是个坏主意<带有未安全字节的代码>不适用于序列化。首先,生成的字节流是特定于endian的。“d”似乎是解决方案。我没有仔细阅读这些文件。谢谢为什么这一定是个坏主意。由于设备的限制,我需要创建绝对最小字节大小。推荐的方法是什么?