【发布时间】:2010-09-22 00:08:41
【问题描述】:
我从套接字得到一个字符数组:
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
8224的值远大于255,char怎么能包含这个值???
谢谢
【问题讨论】:
-
问题是您通过“Reader”而不是“InputStream”读取数据。阅读器使用编码将字节转换为字符,在您的情况下可能是 windows-1252。请参阅下面的答案。
-
我假设您来自 C 背景,其中 sizeof(char) == sizeof(byte),但是即使在 C 中,我也建议您使用无符号字节,因为 r/g/b 的值不是字符。