在java中将int的流转换为char

Oma*_*eji 114 java types

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

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

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

ATo*_*ras 144

也许你要求:

Character.toChars(65) // returns ['A']
Run Code Online (Sandbox Code Playgroud)

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

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

  • 只有当有问题的整数已经是UTF-16代码点时,这才有效.我们不知道是否是这种情况. (9认同)
  • @Atec:不,我的观点是,如果他只是从流中读取字节(目前尚不清楚),那么只需转换或使用"toChars"进行转换通常是不合适的.如果他正在阅读读者,那就没关系了. (2认同)
  • 虽然这个问题没有明确说明,但这个问题是谷歌搜索将ASCII码点转换为字符的第一个结果,所以我正在推动它. (2认同)

小智 105

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

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

int i = 97; // 97 is 'a' in ASCII
char c = (char) i; // c is now 'a'
Run Code Online (Sandbox Code Playgroud)

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

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


Jon*_*eet 74

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

如果您想要ISO-8859-1,只需直接从流中读取字节,只需转换intchar仅适用.

编辑:如果您已经使用了Reader,然后浇注的返回值read()char是去(检查它是否是-1或不是之后),以正确的方式...但它通常更有效,更方便的调用read(char[], int, int)来读的一整块一次发短信.不要忘记检查返回值,以查看已读取的字符数.

  • 如果他真的使用了Reader,那肯定会有所作为.目前尚不清楚,因为他在同一句话中谈到了一个流和一个读者(带有一个小写的r):(编辑了我的答案,以明确这一点. (3认同)
  • 我认为这不是OP所要求的.他正在使用Reader的读取方法:http://java.sun.com/j2se/1.4.2/docs/api/java/io/Reader.html#read()他问的问题是如何转换返回的值这个方法变成了char. (2认同)

Rya*_*son 29

如果你想简单地将int 5转换为char'5':(仅适用于整数0 - 9)

int i = 5;
char c = (char) ('0' + i); // c is now '5';
Run Code Online (Sandbox Code Playgroud)


Yuv*_*dam 8

简单铸造:

int a = 99;
char c = (char) a;
Run Code Online (Sandbox Code Playgroud)

这有什么理由不适合你吗?