我正在尝试从文件中读取二进制数据,将其转换为 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/