我从一个插座一个字符数组:Java char包含值> 255?
char[] cbuf = new char[3];
inputStream.read(cbuf, 0, 3); // read 3 chars in buffer "cbuf", offset = 0
后来,当我打印:
System.out.println("r:"+(int)cbuf[0]+" g:"+(int)cbuf[1]+" b:"+(int)cbuf[2]);
我会在某个时刻:
...
r:82 g:232 b:250
r:82 g:232 b:250
r:66 g:233 b:8224
的值方式超过,一个char如何包含这个值???
谢谢
问题是您正在通过'Reader'而不是'InputStream'读取数据。一个阅读器使用一种编码将字节转换成字符,在你的情况下它可能是windows-1252。请参阅下面的答案。 – 2010-09-22 00:56:04
我假设你来自C的背景,其中sizeof(char)== sizeof(字节),但即使在C我建议你使用无符号字节作为r/g/b的值不是字符。 – 2010-09-22 17:59:57