java - Ascii 到 Hex 转换错误

标签 java hex ascii type-conversion

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

但是看起来您正在尝试以特定编码获取 String 的字节,这更容易实现

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

关于java - Ascii 到 Hex 转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31986532/

相关文章:

java - 使用springs TransactionSynchronizationManager时出现问题

java - Text.getBytes() 返回意外结果

javascript 将十六进制值的字符串表示形式转换为十六进制

bash - 在shell脚本中将十进制数转换为十六进制和二进制

assembly - asm中字符串的DB定义中0x0a是什么意思

javascript - 将 HEX ASCII 解析为数字?

java - 获取 aList.get(0) 时如何编写安全的 java.util.Optional 空指针赋值?

java - 使用 while 循环向日期添加天数

c - 为什么这只打印 0?

python 美丽汤 ascii 错误