未知的输入字节长度转换为int

时间:2016-05-15 19:20:21

标签: java android string arduino

我的android程序需要通过usb从arduino模拟传感器接收int值并在实时图形上打印,我从回调函数接收byte[]

我尝试了很多方法将byte[]转换为字符串或int包含new String new Integer BigInteger parseInt以及我在其他主题中找到的一些代码方法,但没有任何工作,我只收到正确值的一半,其他值更多或更小。

byte []长度从1变为4,它们是一些空字节,它看起来像这样(log):

enter image description here

如何将其转换为正确的值?哪里有问题?

理想情况下,我需要从传感器接收230到300之间的int值。

2 个答案:

答案 0 :(得分:1)

您的传感器似乎正在使用文本协议。如果我将你的字节转换为ASCII字符,它将是:

..
10-LF
50-2
53-5
56-8
..
13-CR
10-LF
50-2
53-5
..
54-6
13-CR
10-LF
etc.

解释为

258
256

所以,我认为最好的解决方案是将接收的字节累积为字符,并且当重新接受CRLF时,将整个字符串(带有剥离的CRLF)读取为int - 可能是通过parseInt。

答案 1 :(得分:0)

Arduino代码段? 猜测很糟糕:int是16位值字节是8位。 Int_8是-128到127。据我所知,uint8_t 0-255不受java支持,但你可以使用char类型无符号16位(需要转换它)。