我遇到问题,当我尝试将'é'
转换为十六进制时,它会向我显示错误"Type mismatch: cannot convert from int to byte"
代码如下:
public byte[] convertUnicode(String msg){
byte[] data = new byte[msg.length()];
for (int i = 0; i < msg.length(); i++) {
switch (msg.charAt(i)) {
case 'E': data[i] = 0x45; break;
case 'è': data[i] = 0xE9; break;
default: data[i] = 0x3F; break; // '?'
}
}
return data;
}
最好的问候。
答案 0 :(得分:4)
您需要转换为(字节)超过0x7F的值(127,Java的有符号字节的最大值),否则文字将被视为int。
data[i] = (byte)0xE9;
然而,看起来您正试图在特定编码中获取字符串的字节,这更容易使用
byte[] bytes = msg.getBytes("ISO-8859-1"); // Or any other encoding of your choice
答案 1 :(得分:1)
如果您打印的值为&#39; 0xE9&#39;它的233超过字节的值-127到+127。因此,您需要将其类型转换为字节。