【发布时间】:2013-08-17 08:26:54
【问题描述】:
我目前正在开发一个项目,该项目通过串行端口将数据从 java 应用程序发送到 arduino。
我遇到的问题如下,我需要将一个 Integer 拆分为 2 个字节,然后在 Arduino 中将它们组合成一个 Integer。但反过来(Arduino->java)只会给我带来麻烦。 arduino 部分并不难,而且工作起来很吸引人,但是尽管我查看了已经发布在这里的相关问题和答案,但我还是无法弄清楚如何将字节正确地组合成一个 int。
这是拒绝工作的 java 代码:
int in = 500;
byte[] data = new byte[2];
data[0] = (byte)(in & 0xFF);
data[1] = (byte)((in >> 8) & 0xFF);
int res = data[0] | (data[1] << 8);
我从中得到的控制台打印输出是:
data[0] = -12
data[1] = 1
res = -12
但我需要 res 达到 500!
【问题讨论】:
-
一个 int 由 4 个字节组成...
-
如果我理解正确的话,你想在
data[0]中存储5,在data[0]中存储0。其他0呢。不应该是byte[3]吗? -
问题是你沮丧地使用
byte[]。如果您使用short[]或int[],它将按预期工作