我必须从保存在位组合的三个部分中的字节中获取值.
位组合如下
| - - | - - - | - - - |
第一部分包含两位第二部分包含3位第三部分包含3位
样本值是
11010001 = 209十进制
我想要的是创建三个不同的属性,它获得如上定义的给定位的三个部分的十进制值.
如何从这个十进制数中获取位值,然后从各个位获取十进制值..
只需使用移位和屏蔽.假设两位值位于字节的高位:
int value1 = (value >> 6) & 3; // 3 = binary 11
int value2 = (value >> 3) & 7; // 7 = binary 111
int value3 = (value >> 0) & 7;
Run Code Online (Sandbox Code Playgroud)
最后一行当然不必使用移位运算符 - 换0位不做任何事情.我认为它增加了一致性.
对于您的样本值,这将给出value1 = 3,value2 = 2,value3 = 1.
倒车:
byte value = (byte) ((value1 << 6) | (value2 << 3) | (value3 << 0));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2052 次 |
| 最近记录: |