tc9*_*c90 1 c++ binary endianness
我知道在这个网站上有类似的问题,但是,我似乎无法找到真正帮助我解决问题的东西.
至今:
我有1字节(8位),可以是1和0的任意组合.
例如:11000010是我的数据字节.(小端)
我需要做的是确定最高有效位(MSB),在这种情况下是11,是00,01,10,11还是从那里做其他事情.
到目前为止,我已经得到了将字节输出为11000010(存储在字符串中)并尝试从中提取11的程序.(如果我可以解决这个问题,那么创建一个switch case或if语句来检查我自己的内容是否足够简单).
**我对C++的表现不是很好,这就是我要求帮助的原因.
任何帮助是极大的赞赏.
您不需要将其存储为字符串,只需使用按位运算符:
unsigned char myByte = 0xc2; // 11000010
char twoMost = (myByte & 0xff) >> 6; // 00000011
Run Code Online (Sandbox Code Playgroud)
在0xff"选择"(掩模)仅前8位,因此,如果该char类型实际上是大于8位,则一切被丢弃.
通过向右移动6位,您只能保留两个最重要的位.然后,您可以申请switch:
switch(twoMost) {
case 0: // 00
doSomething();
break;
case 1: // 01
doSomething();
break;
case 2: // 10
doSomething();
break;
case 3: // 11
doSomething();
break;
default:
// This is not possible, but better output an error message
}
Run Code Online (Sandbox Code Playgroud)