问题
这可能已经回答了其他问题,但是如何获得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,如果你直接从流中读取字节,那么简单地从int
到char
进行投射。
编辑:如果你已经使用了aReader
,那么将返回值转换为read()
到char
是正确的方法(在检查它是否为-1之后)...但是通常更有效和方便的是调用read(char[], int, int)
一次读取整个文本块。不要忘记检查返回值,以查看已读取的字符数。