如何将java中的十六进制值发送到RS232串口

时间:2017-05-19 09:39:15

标签: java binary serial-port byte twos-complement

我需要向微控制器发送一些命令。 我使用RXTX库。我可以连接到我的微控制器,但我有问题将我的命令转换为正确的字节。

例如: 我想发送0x80十六进制值。

如果我将128整数(0x80)转换为字节

   byte a = (byte) 128;

我得到-128

java字节的范围是-128 - 127

但我需要发送128作为命令。我怎么转换它?

我还有其他命令要发送。

80
20 F2 40 F8 3F 
FA 21 40 

其中一个是40位。

我写入输出流,可以接受byte[]int

...
  static OutputStream out;
out.write(byte[]);
out.write(int); 
..

但是int超出了40bit的范围。如何将40位整数解析为一个字节?

This Question helped me

3 个答案:

答案 0 :(得分:1)

无论Java的签名字节类型系统将其显示为什么,

0x80仍为0x80。

发送它。

答案 1 :(得分:1)

我已经使用了RXTX的长篇大论,我不认为这很重要。只需发送string.getBytes()

答案 2 :(得分:0)

您可以使用

Byte.parseByte("a", 16);

但这只适用于最多127的值,由于有符号/无符号问题,因此需要转换为字节,因此我建议将其转换为int然后将其转换为byte

(byte) (Integer.parseInt("ef",16) & 0xff);