2015-03-25 56 views
2

我想下面的代碼,我的問題是我把得到的字節數組的Java OutputStreamWriter和CP437

炭É應根據其字符集設置對應於144個字符,但我得到的價值 - 55當我跑的代碼,

如果我使用$我會得到36這是正確的?

感謝您的幫助

try { 
    ByteArrayOutputStream result = new ByteArrayOutputStream(); 
    Writer wr = new OutputStreamWriter(result, "CP437"); 
    wr.write("É");// 
    wr.close(); 
    ba2 = result.toByteArray(); 
    result.close(); 

} catch (Exception x) { 
    x.printStackTrace(); 
} 

回答

2

CP437編碼需要8個比特來存儲,我執行代碼,發現存儲在字節中的值作爲-112,E對應於144是一個標準的範圍之外字節(-127到128)。它轉換成一個無符號或正值,以獲得正確的結果,使用下面的代碼轉換爲一個無符號值:

public static int unsignedToBytes(byte b) { 
    return b & 0xFF; 
} 

打印該值:

System.out.println(unsignedToBytes((byte) ba2[0]));

給144這是你的要求的價值。

+0

感謝您的幫助。 – OceanWavez 2015-03-25 18:02:54

相關問題