在Java中将INT(0-255)转换为UTF8 char

时间:2010-08-29 18:21:42

标签: java integer

因为我需要控制一些设备,所以我需要向它们发送一些字节。我通过将一些int值放在一起(和运算符)来创建这些字节,创建一个字节并最终将其附加到String以通过无线电函数将其发送到机器人。

不幸的是,Java有一些主要问题(unsigned int问题)

有人知道,我怎么能转换一个整数,例如

x = 223; 

用Java中的8位字符将它附加到String?

char = (char)x;   // does not work !! 16 bit !! I need 8 bit !

3 个答案:

答案 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;
}

注意这里的字节序是大端。