使用 C 将整数值写入二进制文件
Writing integer values to a file in binary using C
我正在尝试将 9 位数字写入二进制文件。
比如我想把整数值:275写成100010011
等等。 fwrite
一次只允许写入一个字节,我不确定如何操作这些位才能做到这一点。
您必须至少写入两个字节才能存储 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 中使用位移位。
我正在尝试将 9 位数字写入二进制文件。
比如我想把整数值:275写成100010011
等等。 fwrite
一次只允许写入一个字节,我不确定如何操作这些位才能做到这一点。
您必须至少写入两个字节才能存储 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 中使用位移位。