我有两个字节,8位八位字节,应将其读取为:[3位] [4位] [3位]。

例子:

unsigned char octet1 = 0b11111111;  // binary values
unsigned char octet2 = 0b00000011;

作为整数:[7] [15] [7]。

有人可以给我提示从哪里开始吗?

最佳答案

在提取我们想要的位之前,无需将两个字节放在一起。

#include <stdio.h>

main()
{
    unsigned char octet1 = 0b11111111;
    unsigned char octet2 = 0b00000011;
    unsigned char n1 = octet1 & 0b111;
    unsigned char n2 = (octet1 >> 3) & 0b1111;
    unsigned char n3 = (octet1 >> 7) | (octet2 + octet2);

    printf("octet1=%u octet2=%u n1=%u n2=%u n3=%u\n",
              octet1, octet2, n1, n2, n3);

}

关于c - 2个字节代表C中的3个整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4096091/

10-14 10:35