我有两个字节,8位八位字节,应该读作:[3位] [4位] [3位].
例:
unsigned char octet1 = 0b11111111; // binary values
unsigned char octet2 = 0b00000011;
Run Code Online (Sandbox Code Playgroud)
整数:[7] [15] [7].
任何人都可以给我一个提示从哪里开始?
在一种伪代码中
octet1 = 0b11111111
octet2 = 0b00000011
word = octet1 | octet2<<8
n1 = word & 0b111
n2 = word>>3 & 0b1111
n3 = word>>7 & 0b111
Run Code Online (Sandbox Code Playgroud)
在提取我们想要的位之前不需要将两个字节放在一起。
#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);
}
Run Code Online (Sandbox Code Playgroud)