【问题标题】:Ascii to Hex conversion errorAscii 到 Hex 转换错误
【发布时间】:2015-11-06 07:42:01
【问题描述】:

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

最好的问候。

【问题讨论】:

    标签: java hex ascii type-conversion


    【解决方案1】:

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

    data[i] = (byte)0xE9;

    但是看起来您正在尝试以特定编码获取字符串的字节,这更容易做到

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2015-08-12
        • 1970-01-01
        • 2021-09-23
        • 1970-01-01
        • 1970-01-01
        • 2012-11-02
        • 2011-08-09
        • 1970-01-01
        • 2012-03-01
        相关资源
        最近更新 更多