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

如何将java中的十六进制值发送到RS232串口,java,binary,serial-port,byte,twos-complement,Java,Binary,Serial Port,Byte,Twos Complement,我需要向我的微控制器发送一些命令。 Iam正在使用RXTX库。我可以连接到我的微控制器,但在将命令转换为正确的字节时遇到问题 例如: 我想发送0x80十六进制值 如果我将128整数(0x80)转换为字节 我得到了-128 java字节的范围是-128-127 但我需要发送128作为命令。我如何转换它 我还有其他命令要发送 80 20 F2 40 F8 3F FA 21 40 其中一个是40位 我写入输出流,它可以接受byte[]或int ... static OutputStream

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

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

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

我得到了
-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超出了40位的范围。如何将40位整数解析为字节


0x80仍然是0x80,不管Java的有符号字节类型系统将其显示为什么


只要发送它。

0x80仍然是0x80,不管Java的有符号字节类型系统将其显示为什么

只需发送即可。

您可以使用

Byte.parseByte("a", 16);
但这只适用于127以下的值,由于有符号/无符号问题,高于127的值需要转换为字节,因此我建议将其转换为int,然后转换为byte

(byte) (Integer.parseInt("ef",16) & 0xff);
你可以用

Byte.parseByte("a", 16);
但这只适用于127以下的值,由于有符号/无符号问题,高于127的值需要转换为字节,因此我建议将其转换为int,然后转换为byte

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

我很久以前就用过RXTX Liberry了,我认为这不重要。只需发送string.getBytes()

我很久以前就使用过RXTX库了,我认为这不重要。只需发送string.getBytes()

hm即可。我的微控制器没有响应我的命令,我想这可能是问题所在:嘘,好的。我的微控制器没有响应我的命令,我想这可能是问题所在:Sbyte c=(byte)(Integer.parseInt(“128”,16)&0xff);给我40作为输出你应该传递十六进制值。80byte c=(byte)(Integer.parseInt(“128”,16)和0xff);给我40作为输出你应该传递十六进制值。我不想发送字符串的字节表示形式我不想发送字符串的字节表示形式