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

这样子就舒服多了。。。。

posted @ 2022-01-27 18:36  zhangdaopin  阅读(330)  评论(0编辑  收藏  举报