我不确定是否已经有类似的;无论如何,这是我的问题。
我一直试图从一个文件的一部分读取一个 int 或 float 的数据,它的内容可以被视为一个十六进制字节数组(我认为基本上所有的计算机文件都可以)。
例如,我想读取一个.STL文件的第81到第84字节的三角形数的整数;这些特定的十六进制字节可能如下所示:
使用 C++,我怎样才能用最有效的方法做到这一点?我要使用 fstream 吗?如果是,怎么办?
最佳答案
我会使用 POSIX 函数(我知道它更像是一个 C 解决方案,但它仍然适用于 C++),首先打开文件,然后使用 lseek 转到第 81 个字节并读取 int(或 float):
int fd = open("myfile.stl", O_RDONLY);
if(fd<0){
perror("Opening file");
exit(1);
}
int res = lseek(fd, 0x54, SEEK_SET); //I use 0x54, like in your example
if(res<0){
perror("Lseek-ing file");
exit(1);
}
int buf; //float buf;
res = read(fd, &buf, 4); //I am assuming that on your machine sizeof(int)=4 as you need
if(res!=4){
perror("Reading the value");
exit(1);
}
close(fd);
关于c++ - 从文件的通用十六进制表示法中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37900639/