java - 数据转换出现^@^@^@,处理方案
今天在测试一条数据的时候,需要把一个16进制的数据,转换为字符串,按照以前的经验,直接一个函数就可以转换掉,像这样:
/**
* The conversion of 16 to ASCII
*
* @param hex
* @return
*/
public static String convertHexToString(String hex) {
StringBuilder sb = new StringBuilder();
StringBuilder temp = new StringBuilder();
// 564e3a322d302e312e34 split into two characters 56, 4e, 3a...
for (int i = 0; i < hex.length() - 1; i += 2) {
// grab the hex in pairs
String output = hex.substring(i, (i + 2));
// convert hex to decimal
int decimal = Integer.parseInt(output, 16);
// convert the decimal to character
sb.append((char) decimal);
temp.append(decimal);
}
// System.out.println(sb.toString());
return sb.toString();
}
public static void main(String[] args) {
System.out.println(convertHexToString("7a303030303233323638363000000000"));
}
控制台输出: z00002326860□□□□
服务器日志输出:z00002326860^@^@^@^@
这不是我想要的呀,怎么把□/^@去掉呢,后来才想起来,这个是因为后面是一串0000000,空字符(ascii 码 0,在程序里一般写作"\0"),在 vim 里就显示成 ^@;好吧,知道它是什么鬼,就好办了;
public static void main(String[] args) {
System.out.println(convertHexToString("7a303030303233323638363000000000").replace("\0", ""));
}
控制台输出:z00002326860
服务器日志输出:z00002326860
这样子就舒服多了。。。。