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
这样子就舒服多了。。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南