Ton*_*ony 4 java byte integer endianness
我正在使用一些小端二进制数据,我已经达到了一个尴尬的地方,我需要将奇数个字节转换为整数值.
现在使用ByteBuffer类我能够读取整数并使用getInt() getLong()函数完美地完成,这些函数分别读取4和8个字节.
但是,在这个例子中,我需要读取三个字节并从中取出一个int.我已经尝试过getShort + get()(2个字节+ 1个字节),但我认为这不是正确的做法.
我猜我需要将字节位移位以获得正确的int值,但我总是对位移有点困惑.
另外我还以为bytebuffer类会提供一个读取奇数个字节的函数,但似乎没有.
一种方法是创建一个长度为三个字节的byte [],将三个字节放入其中,然后在其周围包装一个bytebuffer,并从中读取一个int.但这似乎是很多额外的代码.
任何建议或意见将不胜感激.
谢谢
通过获取三个字节
byte[] tmp = new byte[3];
byteBuffer.get(tmp);
Run Code Online (Sandbox Code Playgroud)
然后转换为intvia
int i = tmp[0] << 16 | tmp[1] << 8 | tmp[2];
Run Code Online (Sandbox Code Playgroud)
要么
int i = tmp[2] << 16 | tmp[1] << 8 | tmp[0];
Run Code Online (Sandbox Code Playgroud)
取决于你的endianess.
| 归档时间: |
|
| 查看次数: |
3628 次 |
| 最近记录: |