java - 2字节短java

标签 java type-conversion byte core short

我正在从串行端口读取 133 个长度的数据包,最后 2 个字节包含 CRC 值,2 个字节值我使用 java 制作单个(我认为是短的)。 这就是我所做的,

short high=(-48 & 0x00ff);
short low=80;

short c=(short) ((high<<8)+low);

但我没有得到正确的结果,是因为签名值有问题吗? 我该如何解决这个问题,请帮助我遇到麻烦

最佳答案

请记住,如果您不太熟悉细节,则不必为位移而纠结。您可以使用 ByteBuffer 来帮助您:

ByteBuffer bb = ByteBuffer.allocate(2);
bb.order(ByteOrder.LITTLE_ENDIAN);
bb.put(firstByte);
bb.put(secondByte);
short shortVal = bb.getShort(0);

反之亦然,你可以先放一个短,然后再拉出字节。

顺便说一下,按位运算会自动将操作数提升到至少一个 int 的宽度。真的没有“不允许将一个字节移动超过 7 位”的概念以及其他似乎正在流传的谣言。

关于java - 2字节短java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/736815/

相关文章:

Java 正则表达式字符串解析,试图找出一种模式

java - 捕获的图像返回小尺寸

c++ - 当使用 bool 值构造字符串对象时,发生了什么类型转换?

java - 这个二进制文档是什么意思?

java - 如何合并MSB和LSB字节?

java - 如何在单个值中表示 4 种 boolean 可能性

java - 使用 Apache common-cli 解析参数

java - 安卓 : Perform a task while application opened for first time alone?

mysql - 不希望 mysql 自动将 String 转换为 Integer

java - 从字符串转换日期带来错误的值