java - 如何使用 SeekableByteChannel 以小端格式读取和写入整数?

标签 java endianness nio2

我需要使用SeekableByteChannel 以小端格式读取和写入有符号和无符号整数。这可能看起来很愚蠢,但我在 JDK 中找不到任何东西。我是否错过了什么,或者我需要自己来完成这个任务吗?这没问题,但我今天不想重新发明轮子。 :-)

最佳答案

听起来像是 ByteBuffer 的作品.

有点像

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();
}

关于java - 如何使用 SeekableByteChannel 以小端格式读取和写入整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10012560/

相关文章:

在不同的体系结构上转换指针类型

c - 从 C 中的字节数组读取时处理字节序?

java - 如何从 AsynchronousSocketChannel 反序列化可序列化对象

java - 我应该关闭使用 java.nio.file.Files.newInputStream 创建的 Streams 吗?

java - 为什么 Java 7 Files.walkFileTree 在遇到远程驱动器上的 tar 文件时抛出异常

java - android bytebuffer as intbuffer - asarray 总是给出不支持的操作异常

java编码标准

r - R 和 MATLAB 之间十六进制 double 表示的差异

java - 如何在java nio中创建多个监听同一端口的udp客户端?

java - 如何在 .jsp 文件的 jsp 标记中使用 java 变量?