Java 如何以little endian格式使用SeekableByteChannel读取和写入整数?
我需要读写带符号和无符号的整数,带有一个小尾端格式的seekablybytechnel。这可能看起来很愚蠢,但我在JDK中找不到任何东西。我是不是错过了什么,还是希望我自己来做?这没问题,但我今天不想重新发明轮子。:-) 听起来像是一部为大众而作的作品 有点像Java 如何以little endian格式使用SeekableByteChannel读取和写入整数?,java,endianness,nio2,Java,Endianness,Nio2,我需要读写带符号和无符号的整数,带有一个小尾端格式的seekablybytechnel。这可能看起来很愚蠢,但我在JDK中找不到任何东西。我是不是错过了什么,还是希望我自己来做?这没问题,但我今天不想重新发明轮子。:-) 听起来像是一部为大众而作的作品 有点像 public static void main(String[] args) { byte[] payload = toArray(-1991249); int number = fromArray(payload);
public static void main(String[] args) {
byte[] payload = toArray(-1991249);
int number = fromArray(payload);
System.out.println(number);
}
public static int fromArray(byte[] payload){
ByteBuffer buffer = ByteBuffer.wrap(payload);
buffer.order(ByteOrder.LITTLE_ENDIAN);
return buffer.getInt();
}
public static byte[] toArray(int value){
ByteBuffer buffer = ByteBuffer.allocate(4);
buffer.order(ByteOrder.LITTLE_ENDIAN);
buffer.putInt(value);
return buffer.array();
}
你有代码吗?我在JDK中没有看到任何称为SeekableByteChannel的东西,在nio包中我能看到的最接近它的东西是WritableByteChannel。这是JSE 7中的java.nio.channels.SeekableByteChannel。啊,我现在看到了。对不起,我以为我看了6和7,但实际上只看了6两次..啊,那是丢失的链接-谢谢。当然,我需要ByteOrder.LITTLE_ENDIAN.好的,我可能需要写一个decorator,这样我就可以轻松地读写无符号整数了。