【问题标题】:Writing integer values to a file in binary using C使用C将整数值写入二进制文件
【发布时间】:2017-11-27 06:04:02
【问题描述】:

我正在尝试将 9 位数字写入二进制文件。

例如,我想将整数值:275 写为100010011 等等。 fwrite 一次只允许写入一个字节,我不确定如何操作这些位才能做到这一点。

【问题讨论】:

标签: c io bit-manipulation bitwise-operators fwrite


【解决方案1】:

您必须至少写入两个字节来存储 9 位值。一个简单的解决方案是每 9 位值使用 16 位

选择一个 16 位无符号类型,例如 uint16_t 并存储 2 个字节

 uint16_t w = 275;
 fwrite(&w, 1, 2, myfilep);

读取单词w,确保它实际上只使用了它的9个第一位(位0~8)

 w &= 0x1FF;

请注意,如果您在另一个系统上读取文件,而该系统与编写该单词的系统具有相同的字节序,则可能会遇到字节序问题。

您还可以使用 16 位字的 9 位优化该解决方案,然后使用剩余的 7 位存储下一个 9 位值的前 7 位等...

请参阅 this answer,它解释了如何在 C 中使用位移位。

【讨论】:

    猜你喜欢
    • 2012-03-03
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 2014-08-13
    • 2017-01-26
    相关资源
    最近更新 更多