我有以下问题:我正在将阵列发送到串行端口,看起来像这样

 byte arr[] = new byte[]{0x18, 0x1B, 0x02, 0x05, 0xFF, 0x01, 0x10,
                         0x21,0x30, 0x00, 0x00, 0x6A, 0x28, 0x1B,0x03}


问题来了-我有3个具有R,G,B颜色的文本字段。我以String的形式从中获取值,但无法将其转换为上述格式0xHexValue并将其放入字节数组中。我尝试了很多方法,但是都没有成功。

编辑:我从txtField.getText()从GUI的文本字段中获取值,之后在示例R 200,G 0,B 0中转换为十六进制C8 00 00没有问题,但是我无法将十六进制插入我的字节中数组,因为它仍然是string。当我尝试使用Byte.parseByte(s)将字符串转换为字节时,出现一些负值...。

编辑2 Byte.valueOf(myString)获得值200的异常


  java.lang.NumberFormatException:值超出范围。价值:“ 200”
  基数:10


GUYS:我看到了您的帖子,我建议重点关注:如何在示例中使此字符串“ C8”适合正确格式为0xC8的arr [],当然也可以作为字节而不是String ...

最佳答案

使用Byte.parseByte

Byte.parseByte(inputString,16);


16是十六进制基数



您也可以使用Byte.decode

Byte.decode(inputString);//inputString can be decimal, hexadecimal, and octal numbers

09-10 05:41
查看更多