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

标签 c# java android byte

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

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

最佳答案

我们可以使用另一种不带移位的方法将 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);

然后我们可以使用ByteBufferget函数来帮助我们返回bytes

bb.putShort(ShortValue);
nTempByteArr[0] = bb.get(0);
nTempByteArr[1] = bb.get(1);

关于c# - 我想用以下方法将 short 转换为 byte,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20559764/

相关文章:

c# - 将遗留专有 Web 应用程序重写为 MVC3/Entity-Code-First

java - Android改造url开头的查询

java - 获取分成几部分的字符串的长度

具有父类(super class)和子类签名的 Java 2 函数 - 尽 pipe 类的类型是子类,但仍选择父类(super class)

java - 无法将 ArrayList 从 AsyncTask 传递到 Activity (Android)

java - 如何在 Android 中进行搜索

c# - Double ToString 给出四舍五入的结果

C# 我应该手动删除我声明的事件处理程序吗?

c# - 在c#中初始化多维对象数组

java - 调用 HTTP Restful api 的 Cron 作业