当前位置: 代码迷 >> Java相关 >> 想请教一下,这个方法实现什么功能
  详细解决方案

想请教一下,这个方法实现什么功能

热度:79   发布时间:2006-03-15 15:35:00.0
想请教一下,这个方法实现什么功能
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;

}

想请教一下,这个方法实现什么功能

----------------解决方案--------------------------------------------------------

为什么没有人回答我啊? 请高手帮帮忙啊
自己顶一下!


----------------解决方案--------------------------------------------------------
if else的作用是右移sum一位,并且如果原来最低位是1,
就把它rotate到第16位。然后取出bb里边的一个byte,
把它加到sum里边,然后只保留结果的short部分(16位)。
不知道ByteBuffer的机制,
看来那个bb.get()方法既需要取出一个byte,
还要移除当前值;也或者bb.hasRemaining()需要调用cursor移动的操作;总之,这两个方法的名称有点词不达意。
整体方法的作用我也不太明白,抱歉。
----------------解决方案--------------------------------------------------------
谢谢楼上解答,期待......
----------------解决方案--------------------------------------------------------
  相关解决方案