C BLOB,它是怎么工作的

C BLOB,它是怎么工作的,c,blob,C,Blob,我是编程新手,我有一个预制代码,其中一部分计算是基于从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] <<

我是编程新手,我有一个预制代码,其中一部分计算是基于从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);
}
unsigned short decode_le16(字节*buf){
返回buf[0]|(buf[1]
解码_le16

“le”代表.16是以位为单位的大小。该代码需要两个(8位)字节,并使用移位和按位OR运算将它们组合成一个16位整数,这是一种相当标准的解码endianness独立二进制格式的方法

如何阅读这些信息

问题中未显示的一些代码必须使用文件I/O从文件中检索字节数组。然后将该数组逐段馈送给函数,如
decode\u le16
。然后其他一些代码将这些整数、字符等组合到更高级别的数据结构中

在事先不了解布局的情况下,如何查看BLOB的结构

你不能,blob不是按定义构造的,它们只是位/字节数组。如果你必须知道并且没有在某处记录格式,你必须通过跟踪上面描述的应用程序代码对其进行反向工程

解码_le16

“le”代表.16是以位为单位的大小。该代码需要两个(8位)字节,并使用移位和按位OR运算将它们组合成一个16位整数,这是一种相当标准的解码endianness独立二进制格式的方法

如何阅读这些信息

问题中未显示的一些代码必须使用文件I/O从文件中检索字节数组。然后将该数组逐段馈送给函数,如
decode\u le16
。然后其他一些代码将这些整数、字符等组合到更高级别的数据结构中

在事先不了解布局的情况下,如何查看BLOB的结构


你不能,blob不是按定义构造的,它们只是位/字节数组。如果你必须知道并且没有在某处记录格式,你必须通过跟踪上面描述的应用程序代码来对其进行反向工程。

你所展示的代码只是用于读取和转换相反端的二进制数据-这对你来说毫无意义请注意,a是二进制数据块的通用术语,如果没有进一步的信息,我想没有人能给你更多的细节。好的,但我很确定这两个函数是用来读取BLOB的。BLOB是一个二进制文件,对吗?但是如果我事先不知道它是如何压缩的,那么ca我对它有一个大概的了解?就像它包含一个论文Id、许多论文引用、参考文献等是很有用的。但是我如何才能对它有一个大概的了解,这样我就可以开始修改代码了?@1233023确实,你需要一些信息来解释BLOB中存储的内容。你展示的代码只是用来读取和转换二进制数据的相反端性-这与BLOB本身无关。请注意,a是二进制数据块的通用术语,没有进一步的信息,我认为任何人都无法向您提供更多详细信息。好的,但我非常确定这两个函数用于读取BLOB。BLOB是一个二进制文件,对吗?但是如果我之前没有k知道它是如何被压缩的,我怎样才能得到它的概述?就像它可以包含一个论文Id、许多论文引用、参考文献等。但是我怎样才能得到它的概述,这样我就可以开始修改代码了?@1233023确实,你需要一些信息——实际上BLOB中存储了什么——来解释它。