如何在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”似乎是解决方案。我没有仔细阅读这些文件。谢谢为什么这一定是个坏主意。由于设备的限制,我需要创建绝对最小字节大小。推荐的方法是什么?