使用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位等…
请参阅此答案 ,解释如何在C中使用位移。