我想将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/