从C ++中的无符号字符字节流中读取值

问题描述 投票:0回答:1

我的任务是从无符号字符数组读取元数据值,该字符数组包含二进制.shp文件(Shapefile)的字节

unsigned char* bytes;

存储在数组中的文件的标题和其中存储的信息的顺序如下:

int32_t filecode // BigEndian
int32_t skip[5] // Uninteresting stuff
int32_t filelength // BigEndian
int32_t version // LitteEndian
int32_t shapetype // LitteEndian
// Rest of the header and of the filecontent which I don't need

因此,我的问题是我如何在考虑字节顺序的情况下提取此信息(当然,跳过部分除外),并将其读入相应的变量。]​​>

我曾考虑过使用ifstream,但无法弄清楚如何正确地进行操作。

示例:

读取二进制文件的前四个字节,确保大字节序字节顺序,将其存储在int32_t中。然后跳过5 * 4字节(5 * int32)。然后读取四个字节,确保大字节序字节顺序,并将其存储在int32_t中。然后读取四个字节,确保低位字节序,然后再次将其存储在int32_t中,依此类推。

感谢您的帮助!

我的任务是从无符号char数组中读取元数据值,该数组包含二进制.shp文件(Shapefile)无符号char *字节的字节;存储在数组中的文件的标题...

c++ metadata filereader endianness bytestream
1个回答
0
投票

因此,“读取”字节数组仅表示从您知道数据存储在字节数组中的位置中提取字节。然后,您只需要执行适当的位操作即可处理字节序。因此,例如,filecode就是这个

© www.soinside.com 2019 - 2024. All rights reserved.