c - 从文件中读取双二进制数据

标签 c file binary

我正在尝试从文件中读取二进制数据,将其转换为 double 类型的数字并将其打印到屏幕上。我可以让它适用于字节和整数数据,但是当我尝试将它转换为 double 时,我得到的都是 0。 double 类型的数字应该有多少个 0,但那些二进制形式的数字不是零。

int input_fd = open("nameoffile",O_RDONLY);
size_t ret_in;
char buffer = 0;
while((ret_in = read (input_fd,&buffer,sizeof(double)*1)) >0){
    printf("%f ", (double)buffer);
}
printf("\n");
close(input_fd);

正如我所说,当我使用 sizeof(int)*1 和 (int)buffer 时,这适用于整数,也适用于字节数据,但不适用于 double 据。

最佳答案

您正在使用一个 1 字节宽的缓冲区。它与 int 一起“工作”的事实只是误报,因为您正在阅读 sizeof(int) 并将它们复制到 sizeof(char)缓冲区。

如果你想读取一个double然后使用一个double作为目标缓冲区,例如:

double buffer;

while((ret_in = read (input_fd, &buffer, sizeof(double))) >0) {
    printf("%f ", (double)buffer);
}

关于c - 从文件中读取双二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40791451/

相关文章:

Python 截断方法大小参数行为

c - 这个按位左移是做什么的?

algorithm - 算法问题:翻转列

c - 如何在C中分隔二维数组中的行

c++ - 给定代码中是否存在未定义的行为?

库中的.text、.data、.bss .a 文件可以分成单独的部分吗

java - 如何学习用 Java 编写操作系统程序?

c++ - 为什么 'undefined behaviour'存在?

c - 嵌套包装函数

java - 列出目录并获取 Java 中每个文件的 URL 的最快可能性