如何将十六进制转换为Java中的ASCII值?
问题描述:
感谢您的回答...我有31 32 2E 30 31 33 6byte十六进制数字。我想将这个6字节的十六进制数字31 32 2E 30 31 33转换为java中的12.013 ASCII数字。如何将十六进制转换为Java中的ASCII值?
答
像这样的事情?
byte[] bytes = {0x31, 0x32, 0x2E, 0x30, 0x31, 0x33};
String result = new String(bytes, "ASCII");
System.out.println(result);
答
也许不是最优雅的方法,但试试这个:
char[6] string = new char[6];
string[0] = 0x31;
string[1] = 0x32;
string[2] = 0x2E;
string[3] = 0x30;
string[4] = 0x31;
string[5] = 0x33;
String s = new String(string);
int result = Integer.parseInt(s);
答
假设你的输入是代表十六进制数字的字符串数组,你可以做到以下几点:
public static String convert(String[] hexDigits){
byte[] bytes = new byte[hexDigits.length];
for(int i=0;i<bytes.length;i++)
bytes[i] = Integer.decode("0x"+hexDigits[i]).byteValue();
String result;
try {
result = new String(bytes, "ASCII");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
return result;
}
注意,代码假定数字是给出有效的ASCII值,没有基数说明符。
你为什么认为这些数字是相等的?首先看看你的第一个(十六进制)数字比第二个数字大得多。 – Roman 2010-04-26 07:17:25