c++ - 从文件的通用十六进制表示法中提取值

标签 c++ hex

我不确定是否已经有类似的;无论如何,这是我的问题。

我一直试图从一个文件的一部分读取一个 int 或 float 的数据,它的内容可以被视为一个十六进制字节数组(我认为基本上所有的计算机文件都可以)。

例如,我想读取一个.STL文件的第81到第84字节的三角形数的整数;这些特定的十六进制字节可能如下所示:

enter image description here

使用 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/

相关文章:

c++ - 使用给定格式将毫秒转换为持续时间

c++ - 开源 C/C++ 3d 渲染器(支持 3ds max 模型)

c++ - MODBUS TCP 应答转换为浮点 C++

c++ - 遍历十六进制/prop_id 值

c# - 如何将十六进制字符串转换为有符号整数?

java - 了解C++,学习Java需要多长时间?

c++ - 找出一个数的除数

如果可能,C++ 通过右值引用传递参数,否则复制左值引用

php - PHP hexdec 的大十六进制值

C 程序从 Fat MBR 读取十六进制值