我从套接字中获取了一个char数组:
char[] cbuf = new char[3];
inputStream.read(cbuf, 0, 3); // read 3 chars in buffer "cbuf", offset = 0
Run Code Online (Sandbox Code Playgroud)
然后当我打印出来时:
System.out.println("r:"+(int)cbuf[0]+" g:"+(int)cbuf[1]+" b:"+(int)cbuf[2]);
Run Code Online (Sandbox Code Playgroud)
我在某个方面得到了:
...
r:82 g:232 b:250
r:82 g:232 b:250
r:66 g:233 b:8224
Run Code Online (Sandbox Code Playgroud)
的8224值比方式更255,如何能一个字符包含这个值???
谢谢
charJava中的原语是16位宽,用于容纳标准ASCII范围之外的字符,使用Unicode.
看起来你正试图将RGB值存储在一个char[3].我可以建议一个byte[3],或java.awt.Color?
Color c = new Color(255, 255, 240);
Run Code Online (Sandbox Code Playgroud)
InputStreamread(char[], int, int)上没有方法.您必须在Reader子类(例如InputStreamReader)上调用它. InputStreamReader使用平台默认字符编码自动将字节转换为字符,在您的情况下,它看起来像是windows-1252.
你收到的角色,8224是Unicode字符U + 2020 Dagger'†'.这可能是使用windows-1252字符编码从字节0x86(134)转换而来的.
如果您正在读取包含非文本内容的文件,则需要确保不使用Reader的子类读取它,而是使用InputStream的子类.或者,您可以使用InputStreamReader并指定像ISO-8859-1这样的字符编码,它将每个字节映射到具有相同数值的char.
| 归档时间: |
|
| 查看次数: |
2879 次 |
| 最近记录: |