我正在使用以下方法将字节转换为short,
short shortvalue;
nTempByteArr[0] = RawDataQueue.poll();
nTempByteArr[1] = RawDataQueue.poll();
ShortValue = (short) (((nTempByteArr[1] & 0xff) << 8) | (nTempByteArr[0] & 0xff));
如何将短值转换为完全相同的两个字节nTempByteArr [0]和nTempbyteArr [1]
我试过了:
nByteArr[0] = (byte)((ShortValue & 0xff00) >> 8);
nByteArr[1] = (byte)(ShortValue & 0xff);
nByteArr[0] = (byte)( ShortValue & 0xff);
nByteArr[1] = (byte)((ShortValue & 0xff00) >> 8);
请帮帮我...... !!!!!!!!!!!!!
答案 0 :(得分:1)
我们可以使用另一种没有位移的方法,通过使用bytes
short
转换为java.nio.ByteBuffer
而无需转移
ByteBuffer bb = ByteBuffer.allocate(2);
bb.order(ByteOrder.LITTLE_ENDIAN);
bb.put(nTempByteArr[1]);
bb.put(nTempByteArr[0]);
short shortVal = bb.getShort(0);
我们可以使用get
ByteBuffer
函数帮助我们回复bytes
bb.putShort(ShortValue);
nTempByteArr[0] = bb.get(0);
nTempByteArr[1] = bb.get(1);
答案 1 :(得分:0)
short s = ...
byte b1 = (byte)((s >> 8) & 0xff);
byte b2 = (byte)(s & 0xff);
答案 2 :(得分:0)
试试这个
(数字&gt;&gt;&gt; 8)&amp; 0xFF的; (数字&gt;&gt;&gt; 0)&amp;为0xFF;
(短)((portArray [0]&lt;&lt; 8)|(portArray [1])&amp; 0xff);
答案 3 :(得分:0)
我的解决方案是正确的。还有一些其他问题,因为只有它无法获得正确的字节