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

时间:2014-06-03 23:13:40

标签: java bytearray type-conversion bit-shift

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

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

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

我似乎有很多尝试,但我还没有看到一个适合所有情况的尝试。 (通常情况下,他们会因负数而失败。)

我使用的是Java,因此即使在中间步骤中也无法使用无符号值。

1 个答案:

答案 0 :(得分:2)

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