gpt4 book ai didi

c - 二进制文件中的文件位置不正确

转载 作者:行者123 更新时间:2023-11-30 15:36:02 27 4
gpt4 key购买 nike

我正在将二进制文件读入一组外部文本文件中以进行后处理。我的代码如下:

for(k = 0; k < 76; k++) {
for(j = 0; j < 76; j++) {
curr = curr + j + k*(dim - 76);
sprintf(Filename, "%s_%d.txt", file,count);
fp = fopen(Filename, "w");
for(i = 0; i < 256; i++) {
fseek(qFile, (curr + i*dim*dim) * sizeof(float), SEEK_SET);
fprintf(oFile, "%f\n", curr + i*dim*dim);
fread(&temp, sizeof(float), 1 ,qFile);
fprintf(fp, "%5.2f\n", temp);
}
fclose(fp);
count++;
}
}

但是,当我查看oFile指向的文件时,每组256个值的起始位置不是以1间隔,而是如下:

67024216
67024216
67024216
67024220
67024224
67024228
67024232
67024240
67024248
67024256
67024264
67024276
67024288
67024300
67024312
.
.
.

我不明白为什么各个元素的间距是4,我知道 float 的大小是4字节,但是打印到文件的值不是字节数,而是字节数的倍数字节。

最佳答案

Single-precision floating-point numbers不像整数那样工作。它们实际上具有较低的精度,因为八位用于符号和指数。这样您就剩下 24 位。

并且您的所有数字恰好都适合 24 位。或者,更确切地说,如果您去掉低两位,它们就会,而低两位恰好总是零(即增加 4 的倍数)。

我不知道它是否能解决您的所有问题,因为我显然不知道该项目的细节。但是,如果您将 float 定义更改为 double,它至少应该可以帮助您解决这个问题。

关于c - 二进制文件中的文件位置不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22718749/

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