想请教一下,这个方法实现什么功能
private static int sum(ByteBuffer bb) {
int sum = 0;
while (bb.hasRemaining()) {
if ((sum & 1) != 0)
sum = (sum >> 1) + 0x8000;
else
sum >>= 1;
sum += bb.get() & 0xff;
sum &= 0xffff;
}
return sum;
}
想请教一下,这个方法实现什么功能
int sum = 0;
while (bb.hasRemaining()) {
if ((sum & 1) != 0)
sum = (sum >> 1) + 0x8000;
else
sum >>= 1;
sum += bb.get() & 0xff;
sum &= 0xffff;
}
return sum;
}
想请教一下,这个方法实现什么功能
----------------解决方案--------------------------------------------------------
为什么没有人回答我啊? 请高手帮帮忙啊
自己顶一下!
----------------解决方案--------------------------------------------------------
if else的作用是右移sum一位,并且如果原来最低位是1,
就把它rotate到第16位。然后取出bb里边的一个byte,
把它加到sum里边,然后只保留结果的short部分(16位)。
不知道ByteBuffer的机制,
看来那个bb.get()方法既需要取出一个byte,
还要移除当前值;也或者bb.hasRemaining()需要调用cursor移动的操作;总之,这两个方法的名称有点词不达意。
整体方法的作用我也不太明白,抱歉。
----------------解决方案--------------------------------------------------------
谢谢楼上解答,期待......
----------------解决方案--------------------------------------------------------