我從一個插座一個字符數組: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