我想将 signed int转换为 signed byte []数组,然后将其转换回signed int。
但是,ByteBuffers(通常的int-> buffer-> byte []数组)对于这种情况来说太慢了。
可以使用基本操作完成吗?
我似乎有很多尝试,但我还没有看到一个适合所有情况的尝试。 (通常情况下,他们会因负数而失败。)
我使用的是Java,因此即使在中间步骤中也无法使用无符号值。
答案 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);
}