从 C代码翻译到java代码时遇到几个问题:
1. unsigned int 的翻译,可以在java中使用long型数字
比如 unsigned int xxx 翻译为 long yyy, 取值时用 yyy&0xffffffff 表示;
2. 移位问题
unsigned int x = 0xffffffff; x>>8 = 0x00ffffff
用java则 long x = 0xffffff; x>>8 = 0xfffffffffff, 就算(x>>8 )&0xfffffff之后的值还是0xffffffff。
这一点是java不会处理的,就是无符号的移位问题,需要特别注意。
解决办法就是参考无符号移位定义,(x>>8 )&0x00ffffff 这样才能得出和 c++一样的数值。