在java中将int的流转换为char

问题

这可能已经回答了其他问题,但是如何获得int值的字符值?

具体来说,我正在从tcp流中读取一个,读者.read()方法返回一个int。

我如何从中得到一个字符?


#1 热门回答(142 赞)

也许你要求:

Character.toChars(65) // returns ['A']

更多信息:Character.toChars(int codePoint)

将指定字符(Unicode代码点)转换为存储在char数组中的UTF-16表示形式。如果指定的代码点是BMP(基本多语言平面或平面0)值,则生成的char数组与codePoint具有相同的值。如果指定的代码点是补充代码点,则生成的char数组具有相应的代理对。


#2 热门回答(105 赞)

这取决于"将int转换为char"的含义。

如果你只想在int中强制转换值,可以使用Java的类型转换符号来强制转换它:

int i = 97; // 97 is 'a' in ASCII
char c = (char) i; // c is now 'a'

如果你的意思是将整数1转换为字符'1',你可以这样做:

if (i >= 0 && i <= 9) {
char c = Character.forDigit(i, 10);
....
}

#3 热门回答(74 赞)

如果你尝试将流转换为文本,则需要了解要使用的编码。然后,你可以将一个字节数组传递给String构造函数并提供aCharset,或使用InputStreamReader与相应的5353678。

如果你想要ISO-8859-1,如果你直接从流中读取字节,那么简单地从intchar进行投射。

编辑:如果你已经使用了aReader,那么将返回值转换为read()char是正确的方法(在检查它是否为-1之后)...但是通常更有效和方便的是调用read(char[], int, int)一次读取整个文本块。不要忘记检查返回值,以查看已读取的字符数。