如何打开C程序生成的python中的复数文件?

How to open complex number file in python that generated by C program?

我的代码

with open('car.FT','r', encoding="utf-8",errors='ignore') as h:
    for line in h:
        print(line)

文件“car.FT”是具有复数值的傅立叶变换的输出 stored.It 是通过 C 程序编写的,但我想在 python 中打开此文件。 使用上面这段代码无法读取输出。 该文件是用 C 编写的:

typedef struct complex {    /* Define a complex type */
    float r,i;          /* Real and imaginery parts */
    } COMPLEX;

/* buffer for input image being converted into complex type */
COMPLEX IN_BUF[ROWS][COLS];

///PROCESSING ON IN_BUF////

fwrite(IN_BUF, sizeof(COMPLEX), ROWS*COLS, fout);

下面是文件中的实际数据。我想读。

我想在 python 中读取上述文件数据。

根据 C 代码判断,数字被写为二进制浮点数,您显示的是文件内容的十六进制输出。在这种情况下,您必须阅读 binary 内容,同时尝试将其作为文本文件阅读。

您必须以二进制模式打开文件 (rb),使用 struct.unpack 读取并转换每个浮点值(长度为 4 个字节),并将浮点对转换为 complex。这是一个简单的实现(未经测试):

from struct import unpack

numbers = [] 
with open(filename, "rb") as f:
    data = f.read()  # read all data
count = len(data) // 8  # each complex number takes 8 bytes
i = 0
for index in range(count):
    # "f" means float (4 bytes); unpack returns a tuple with one value
    real = unpack("f", data[i:i + 4])[0]
    i += 4
    im = unpack("f", data[i:i + 4])[0]
    i += 4
    numbers.append(complex(real, im))

print(numbers)