Java - 将有符号 int 转换为有符号字节数组并返回

标签 java arrays type-conversion bit-shift

我想将signed int 转换为signed byte[] 数组,然后将其转换回有符号int。

但是,ByteBuffers(通常的 int->buffer->byte[] 数组)对于这种情况来说太慢了。

这可以使用基本操作来完成吗?

我似乎做了很多尝试,但我还没有看到一种在所有情况下都有效的方法。 (通常,它们会因负数而失败。)

我使用 Java 工作,因此即使在中间步骤中也不可能使用无符号值。

最佳答案

private void writeInt(int val, byte[] data, int offset) {
    data[offset    ] = (byte)(val >>> 24);
    data[offset + 1] = (byte)(val >>> 16);
    data[offset + 2] = (byte)(val >>> 8);
    data[offset + 3] = (byte)val;
}

private int readInt(byte[] data, int offset) {
    return (data[offset] << 24)
            | ((data[offset + 1] & 0xFF) << 16)
            | ((data[offset + 2] & 0xFF) << 8)
            | (data[offset + 3] & 0xFF);
}

关于Java - 将有符号 int 转换为有符号字节数组并返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24026494/

相关文章:

Java Servlets - 转发到 url 而不是 ServletName.do

Python 字符串到列表的转换

java - 属性值的自定义类型转换

java - Android Activity 的 onCreate 中出现 NullPointer 异常

Android LiveData 中 Java 未经检查的调用与 Kotlin 的比较

php - 向/从二维数组添加/获取数据不起作用

javascript - JavaScript 中的剩余语法

Java数组没有保持初始化

python - 为什么 NumPy 对数组和标量返回不同的类型?

java - 如何获取 JVM 加载的所有包名称的列表