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 的字节值。因此,您需要将其类型转换为字节。
我有一个问题,当我尝试将 'é'
转换为十六进制时,出现错误 "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 的字节值。因此,您需要将其类型转换为字节。