我目前正在开展一个项目,通过串口从Java应用程序向Arduino发送数据。
我的问题是:我需要将一个整数分成两个字节,然后在Arduino中将它们组合成一个整数。但相反地(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!
data [0]
中,将0存储在data [0]
中。那另一个0呢?它不应该是byte[3]
吗? - Vikas Vbyte[]
。如果你使用short[]
或int[]
,它会按预期工作。 - c.s.