我期待这个:
ByteBuffer.wrap(new byte[] { 0, 0, 0, -34 }).getInt() == 222
但是以下情况属实:
ByteBuffer.wrap(new byte[] { 0, 0, 0, -34 }).getInt() == -570425344
我如何解决Java在签名/未签名类型中的许多限制,或者我是否需要完全自己滚动?
解决方法:
码:
public static void main(String[] args) {
ByteBuffer bb = ByteBuffer.wrap(new byte[] { 0, 0, 0, -34 });
System.out.println(bb.order());
System.out.println(bb.getInt() == 222);
bb.rewind();
bb.order(ByteOrder.LITTLE_ENDIAN);
System.out.println(bb.order());
System.out.println(bb.getInt() == -570425344);
}
安慰:
BIG_ENDIAN
true
LITTLE_ENDIAN
true
附录:作为参考,“新创建的字节缓冲区的顺序始终为BIG_ENDIAN
.” – ByteBuffer#order()