Ascii 到 Hex 转换错误

Ascii to Hex conversion error

我有一个问题,当我尝试将 'é' 转换为十六进制时,出现错误 "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;
  }  

此致。

对于超过 0x7F(127,Java 有符号字节的最大值)的值,您需要转换为 (byte),否则文字将被视为 int。

data[i] = (byte)0xE9;

然而,看起来您正在尝试以特定编码获取字符串的字节,使用

这要容易得多
byte[] bytes = msg.getBytes("ISO-8859-1");  // Or any other encoding of your choice

如果你打印 '0xE9' 的值,它的 233 超过了 -127 到 +127 的字节值。因此,您需要将其类型转换为字节。