从3个字节生成一个16位整数,最大值为31(5位)
本文关键字:整数 最大值 5位 16位 一个 3个 字节 | 更新日期: 2023-09-27 18:10:31
我想从3个小端字节中获得16位值,最大值为31(这意味着它们最多为5个集位)。我怎么得到最后的5位字节,然后把它们放在一起?
。字节:0011111 0010101 0011100 into 1111110101111000
我试过了,但我觉得我只是覆盖了我的旧位
cp = (bar << 3) | (bag >> 2) | (bab >> 7);
您不是在覆盖位,而是在将值放在一起之前将位移出值。bag >> 2
只保留原来的3位,bab >> 7
移出所有5位,再加2位。
将值向左平移:
cp = (bar << 10) | (bag << 5) | bab;
你想在右边为其他值留出空间:
bar << 10 -11111----------
bag << 5 ------10101-----
bab -----------11100