有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

我尝试了许多方法将byte[]转换为string或int include new String{}{}{}和我在其他主题中找到的一些代码方法,但没有任何效果,我只收到了正确值的一半,其他值甚至更小

字节[]长度从1更改为4,它们是一些空字节,如下所示(日志):

enter image description here

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

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


共 (2) 个答案

  1. # 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

  2. # 2 楼答案

    Arduino代码段? 猜错了:int是一个16位的值,字节是8位。 Int_8为-128至127。据我所知,java不支持uint8_t 0-255,但可以使用字符类型的无符号16位(需要强制转换)