gpt4 book ai didi

c - 将位流添加到缓冲区 BYTE 并写入二进制文件 - C

转载 作者:行者123 更新时间:2023-11-30 20:59:54 25 4
gpt4 key购买 nike

我正在尝试将数字转换为二进制,然后将二进制数写入二进制文件。假设所有数字都是 7 位数字(int 数字 < 127)。所以最终,该文件将包含 7 位 block 的数字

我知道每个BYTE是8位,我不能将每个数字写入1个BYTE,但需要使用整个BYTE(即某些数字将位于2个不同的BYTES中)

如果:120 = 1111000 | 7 = 0000111 | 64 = 1000000

所以比特流是111100000001111000000,应该写成

1111000|0 000111|10 00000|00
1BYTE 2BYTE 3BYTE

我想使用缓冲区将 8 位移位到缓冲区,然后使用指针 fwrite 到文件但我就是没办法写出来。谢谢您的帮助

最佳答案

首先,在处理位时使用无符号整数

unsigned char a = 0;
char bits[] = "1111000";
char *p = bits;
while (*p) {
a <<= 1; // shift left
a |= (*p == '1'); // add bit
p++; // next bit
}

关于c - 将位流添加到缓冲区 BYTE 并写入二进制文件 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44518615/

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