我想用以下方法将short转换为byte

时间:2013-12-13 05:32:47

标签: c# java android byte

我正在使用以下方法将字节转换为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);

请帮帮我...... !!!!!!!!!!!!!

4 个答案:

答案 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)

我的解决方案是正确的。还有一些其他问题,因为只有它无法获得正确的字节