java未知输入字节长度转换为int
我的安卓程序需要通过usb从arduino模拟传感器接收int值并将其打印在实时图形上,我从回调函数接收byte[]
我尝试了许多方法将byte[]
转换为string或int include new String
{
字节[]长度从1更改为4,它们是一些空字节,如下所示(日志):
如何将其转换为正确的值?问题出在哪里
在理想情况下,我需要从传感器接收230到300之间的int值
你可以在下面搜索框中键入要查询的问题!
我的安卓程序需要通过usb从arduino模拟传感器接收int值并将其打印在实时图形上,我从回调函数接收byte[]
我尝试了许多方法将byte[]
转换为string或int include new String
{
字节[]长度从1更改为4,它们是一些空字节,如下所示(日志):
如何将其转换为正确的值?问题出在哪里
在理想情况下,我需要从传感器接收230到300之间的int值
# 1 楼答案
您的传感器似乎正在使用文本协议。如果我将您的字节转换为ASCII字符,它将是:
解释为
所以,我认为最好的解决方案是将接收到的字节累积为字符,当CRLF被重新激活时,将整个字符串(使用剥离的CRLF)读取为int,可能是通过parseInt
# 2 楼答案
Arduino代码段? 猜错了:int是一个16位的值,字节是8位。 Int_8为-128至127。据我所知,java不支持uint8_t 0-255,但可以使用字符类型的无符号16位(需要强制转换)