因为我需要控制一些设备,所以我需要向它们发送一些字节。我通过将一些int值放在一起(和运算符)来创建这些字节,创建一个字节并最终将其附加到String以通过无线电函数将其发送到机器人。
不幸的是,Java有一些主要问题(unsigned int问题)
有人知道,我怎么能转换一个整数,例如
x = 223;
用Java中的8位字符将它附加到String?
char = (char)x; // does not work !! 16 bit !! I need 8 bit !
答案 0 :(得分:1)
Java中的char
16位。如果需要8位数据类型,请使用byte
。
有关如何使用UTF-8编码将byte[]
转换为String
,请参阅How to convert Strings to and from UTF8 byte arrays in Java。
答案 1 :(得分:0)
通过线路发送java.lang.String可能是错误的方法,因为字符串总是16位(因为Java是为全球化和东西设计的)。如果您的无线电库允许您传递byte []而不是String,那么您将无需担心转换为UTF8就可以发送8位值。至于从int转换为无符号字节,您可能希望查看this article。
答案 2 :(得分:0)
int to bytes of bytes
public byte[] intToByteArray(int num){
byte[] intBytes = new byte[4];
intBytes[0] = (byte) (num >>> 24);
intBytes[1] = (byte) (num >>> 16);
intBytes[2] = (byte) (num >>> 8);
intBytes[3] = (byte) num;
return intBytes;
}
注意这里的字节序是大端。