gpt4 book ai didi

c - 如何用Python编写二进制数据并用C读取它?

转载 作者:行者123 更新时间:2023-11-30 16:27:19 26 4
gpt4 key购买 nike

我正在尝试使用 Python 将整数数组写入二进制文件并在 C 中读取这些值。我尝试了以下代码,但结果是垃圾。

Python:

import struct
import numpy as np
import matplotlib.pyplot as plt
from functools import reduce

# s = np.random.uniform(0,500,1000)

mu, sigma = 1, 0.1 # mean and standard deviation
n = np.random.normal(mu, sigma, 5000)
n = [i * 1000 for i in n]
n = [int(round(i, 0)) for i in n]
n.sort()

with open('norm.bin', 'wb') as f:
for e in n:
f.write(struct.pack('i', e))

C:

#include <stdio.h>

#define SIZE 5000

int main()
{
FILE *file;
int norm[SIZE];

file = fopen("norm.bin","rb");
fread(norm, sizeof(int), 1, file);
fclose(file);

for (int i = 0; i < SIZE; i++) {
printf("%d\n", norm[i]);
}

return 0;
}

如果有人能帮助我,我将不胜感激。

最佳答案

fread()函数的用法是

fread(/*buffer*/, /*size of one element*/, /*number of elements*/, /*file pointer*/);

因此,

fread(norm, sizeof(int), 1, file);

仅读取一个元素,其余 4999 个元素未初始化。

使用

fread(norm, sizeof(int), SIZE, file);

读取SIZE元素。

fread() 返回读取的元素数量,因此检查读取是否成功,例如

if (fread(norm, sizeof(int), SIZE, file) != SIZE) {
fputs("fread() failed\n", stderr);
fclose(file);
return 1;
}

更好。

关于c - 如何用Python编写二进制数据并用C读取它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52781432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com