我有这个字符串:“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 bits long.
您能做的最好的事情就是用完一整个字节,但忽略其中的 5 位。为此(假设数字始终适合一个字节),请将输入字符串转换为整数类型:
long l = strtol(c, 0, 2);
然后获取其最低有效字节:
unsigned char b = l & 0xffl;
并将其写入文件:
fwrite(&b, 1, 1, binFile);
1 嗯,也许不是全部。某些地方可能有一些研究人员正在尝试位大小的文件系统。我不知道。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)