c - 如何用C语言将单个位写入文件

标签 c encoding decoding entropy

我正在编写熵编码算法,我想将单个位(如编码字符)写入文件。例如,我想将 011 写入文件,但如果将其存储为字符,它将占用 3 个字节而不是 3 位。所以我的最后一个问题是:如何将单个位写入文件?

提前致谢!

最佳答案

您无法将单个位写入文件,分辨率是单个字节。

如果你想按顺序写入位,你必须将它们批量处理,直到有一个完整的字节,然后再写入。伪代码(虽然类似于 C)将类似于:

currbyte = 0
bitcount = 0
def writeBit (bit):
    currbyte = currbyte << 1 | bit
    bitcount++
    if bitcount == BITS_PER_BYTE:
        write currbyte to file
        currbyte = 0
        bitcount = 0

如果您想更改各个位,则必须读取一个字节,请使用 bitwise operations操作它,然后将其写回。

关于c - 如何用C语言将单个位写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27589460/

相关文章:

c - Go cgo ldap_init 无法确定 C.ldap_init 的名称类型

c - char *a[10]; 之间的区别和 char (*a)[10];

javascript - 多字节字符占用的字符数在 JavaScript 和 MySQL 中是不同的

php - 编码、序列化和编码

python - 未烘烤的mojibake

c++ - 包装 C API 以供 C++ 使用的策略

c - 什么是事件句柄?

file - Torrent 文件协议(protocol) - 自定义字段

Python 3 Base64 解码弄乱换行符

swift - Base64 字符串转 UIImage 问题