gpt4 book ai didi

c - 在 C 中处理比特流

转载 作者:太空宇宙 更新时间:2023-11-04 04:05:37 25 4
gpt4 key购买 nike

我正在用 C 语言编写一些具有通信 channel 的信号处理代码。在输出时,我得到了一堆比特。

for (n=0; n<BUFFER_LENGTH; n++) {
/* do some processing that calculates x */
output[n] = x > 0;
}

这是我的问题:

  1. 有没有好的类型可以表示输出数组?一开始我以为uint1_t 会很理想,但我听说那不一定代表内存中的一位。
  2. 一旦我找到我知道的数据中的同步模式下一位的格式,我怎么能将一堆 1 和 0 转换成数组转换成整数, float , double ,人物等?我听说过使用一个 union ,但我认为这不会与位数组。

最佳答案

只需将数据存储在足够大的字节 block 中,然后使用移位和掩码遍历这些位以按顺序提取各个位。

例如将缓冲区的内容作为单个位打印出来:

#include <stdio.h>
#include <stdint.h> // uint8_t et al
#include <limits.h> // CHAR_BIT

uint8_t buffer[256];
int b, bit;

for (b = 0; b < 256; ++b)
{
for (bit = CHAR_BIT - 1; bit >= 0; --bit)
{
uint8_t mask = 1 << bit;
printf("%2d", (buffer[b] & mask) != 0);
}
printf("\n");
}

关于c - 在 C 中处理比特流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6417412/

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