我是编程新手,我有一个预制代码,其中部分计算基于从 BLOB 文件中提取一些信息 我想我已经找到了代码中正在读取信息的地方,但我不明白:
unsigned short decode_le16(byte *buf) {
return buf[0] | (buf[1] << 8);
}
unsigned int decode_le32(byte *buf) {
return buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24);
}
BLOB 包含字符和数字,但如何读取这些信息?在事先不知道布局的情况下,我如何才能看到 BLOB 的结构?
最佳答案
decode_le16
“乐”代表little endian . 16 是以位为单位的大小。此代码采用两个(8 位)字节,并使用移位和按位或运算将它们组合成一个 16 位整数,这是一种解码与字节顺序无关的二进制格式的相当标准的方法。
how is this information read
问题中未显示的某些代码必须使用文件 I/O 从文件中检索字节数组。然后将此数组逐个馈送到 decode_le16
等函数。然后一些其他代码将这些整数、字符和诸如此类的东西组装成更高级别的数据结构。
And how can I see the structure of the BLOB without prior knowledge of the layout?
你不能,BLOB 不是按定义结构化的,它们只是位/字节的数组。如果您必须知道并且没有在某处记录格式,则必须通过跟踪上述应用程序代码对其进行逆向工程。
关于c - BLOB,它是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42781342/