無符號字符問題。 我正在讀取具有ASCII /擴展ASCII數據的PPM圖像文件。轉換C/C++無符號字符到JAVA的問題
對於一個字符,例如。 「†」, 在JAVA,讀取它作爲char和類型轉換轉換成int其值後是8224 在C/C++,讀它作爲一個無符號字符和類型轉換轉換成int其值後是160
如何將我在JAVA閱讀,以獲得價值160?
的followng C++
unsigned char ch1 ='†';
char ch2 = '†';
cout << (int) ch1 << "\n"; // prints 160
cout << (int) ch2 << "\n"; // prints -96
在Java中,
char ch1 = '^';
char ch2 = '†';
System.out.println (" value : " + (int) ch1); // prints 94
System.out.println (" value :" + (byte) ch1); // prints 94
System.out.println (" value : " + (int) ch2); // prints 8224
System.out.println (" value :" + (byte) ch2); // prints 32
以下是一些例外 8224† 8226• 8800≠ 8482™ 8710Δ 8211 - 8221」 8216' 9674◊ 8260/ 8249 < 8249 < 8734∞ 8747∫ 8364€ 8730√ 8804≤
以下是一些好的 94^ 102f也 臺112p 119瓦特 126〜 196 Ä 122ž 197埃 197埃
任何幫助理解
感謝atzz,這是很好的解釋。 我現在試圖弄清楚在C++中使用charset的方式 謝謝!:) – metalhawk 2010-09-02 20:57:10
@ ravikumar1:試試US-ASCII。如果這不起作用,請嘗試ISO-8859-1。 – Powerlord 2010-09-02 21:04:05
謝謝Bemrose。我寫了一個小的fn來獲取字符集。我發現-96的命中(256-96 = 160)。謝謝大家的支持。 :)下面是我的測試fn: – metalhawk 2010-09-02 21:24:52