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] << 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/

相关文章:

c - 用宏类型查找替换 "getter"函数

c - 查找数组中最大的 float 的问题

编译器提示放错了其他地方

c - 一个 C cgi 脚本,用于从 sqlite3_column_blob 指针提供二进制文件

mysql - 在 MySQL InnoDB 中存储大于 max_allowed_pa​​cket 的 BLOB 的最佳方法

c - 从用户读取 "n"行并将其写入 C 中的文本文件的程序

javascript - 将 Data-URL 保存到数据库中

python - 如何连接 blob?

blob - 避免在保存 BLOB 数据的事件源应用程序中进行两阶段提交

c - 如何获取该文件每行的第一个数字以递增它?那么第一行不被跳过呢?在C中