从 3 个字节生成一个 16 位整数,最大值为 31(5 位)
Make a 16 bit integer from 3 bytes with 31 max value (5 bits)
我想从 3 个小字节序字节中生成一个 16 位的值,最大值为 31(这意味着它们最多有 5 个设置位)。我如何获取字节的最后 5 位,然后将它们放在一起?
例如字节:0011111 0010101 0011100 到 1111110101111000
我试过了,但我想我只是在覆盖我的旧位
cp = (bar << 3) | (bag >> 2) | (bab >> 7);
您不是在覆盖位,而是在将位放在一起之前将位从值中移出。 bag >> 2
只保留原来的三位,bab >> 7
移出所有五位加上另外两位。
改为将值向左移动:
cp = (bar << 10) | (bag << 5) | bab;
您想在右侧为其他值腾出空间:
bar << 10 -11111----------
bag << 5 ------10101-----
bab -----------11100
我想从 3 个小字节序字节中生成一个 16 位的值,最大值为 31(这意味着它们最多有 5 个设置位)。我如何获取字节的最后 5 位,然后将它们放在一起?
例如字节:0011111 0010101 0011100 到 1111110101111000
我试过了,但我想我只是在覆盖我的旧位
cp = (bar << 3) | (bag >> 2) | (bab >> 7);
您不是在覆盖位,而是在将位放在一起之前将位从值中移出。 bag >> 2
只保留原来的三位,bab >> 7
移出所有五位加上另外两位。
改为将值向左移动:
cp = (bar << 10) | (bag << 5) | bab;
您想在右侧为其他值腾出空间:
bar << 10 -11111----------
bag << 5 ------10101-----
bab -----------11100