我正在尝试以下代码,我的问题是我用来获取字节数组的字符
charÉ应根据其charset集对应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();
}
答案 0 :(得分:2)
CP437编码需要8位存储,我执行你的代码并发现存储在一个字节中的值为-112,对应144的É超出了标准字节的范围(-127到128)。将其转换为无符号或正值以获得正确的结果,使用以下代码转换为无符号值:
public static int unsignedToBytes(byte b) {
return b & 0xFF;
}
打印此值:
System.out.println(unsignedToBytes((byte) ba2[0]));
给出144这是您所需的值。