Ascii到Hex转换错误

时间:2015-08-13 11:09:26

标签: java hex ascii type-conversion

我遇到问题,当我尝试将'é'转换为十六进制时,它会向我显示错误"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;
  }  

最好的问候。

2 个答案:

答案 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。因此,您需要将其类型转换为字节。