gpt4 book ai didi

c - 在 C 中将位写入文件

转载 作者:太空狗 更新时间:2023-10-29 16:23:59 25 4
gpt4 key购买 nike

我有这个字符串:“101”我想用 C 将它写入一个文件,而不是文本:“101”等 8 位 x 字符。但直接使用字符串作为位:位“1”、位“0”和位“1”,这样文件将是 3 位。

这可能吗?我在网上搜索并尝试这样做:

char c[25] = "101";
FILE *binFile = fopen("binFile.bin", "wb");
int x = atoi(c);
fwrite(&x, sizeof(x), 1, binFile);

但最后,当我验证文件的字节数时,Windows 告诉我它是 4 字节的文件!而不是 3 位!

如果可能的话,我该怎么做?非常感谢。

最佳答案

所有文件系统¹ 都以字节为单位处理文件(并以更大的粒度分配存储空间,最少一次 512 字节)。您不可能获得3 位 长的文件。

您能做的最好的事情就是用完一个完整的字节,但忽略其中的 5 位。为此(假设数字总是适合一个字节),将输入字符串转换为整数类型:

long l = strtol(c, 0, 2);

然后获取它的最低有效字节:

unsigned char b = l & 0xffl;

并将其写入文件:

fwrite(&b, 1, 1, binFile);

¹ 好吧,也许不是全部。可能有一些研究人员在某个地方试验比特大小的文件系统。我不知道。

关于c - 在 C 中将位写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13252697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com