二进制数据转化为字符串如题 谢谢了

“密码”“MAC码”等数据由于是二进制数据,在Java中只能以byte[]形式存放,StringChg 但往往需要转化成可见字符串在通讯报文(如XML)中传递。 例如,密文: byte[] password = {0x5A,0x08,0x00,0xFF,0xB2,0x33,0xDE,0xFF}; 转化为字符串:"5A0800FFB233DEFF" 请编程实现方法byte2HexString完成这种转化: public String byte2HexString(byte[] b) 注:字符'A'的数值为0x41,字符'0'的数值为0x30 上面的是题目,以下是代码: public class StringChg { public static void main(String[] args) { byte[] password = {0x5A,0x08,0x00,(byte) 0xFF,(byte) 0xB2,0x33,(byte) 0xDE,(byte) 0xFF}; System.out.println(byte2HexString(password)); } public static String byte2HexString(byte[] b) { StringBuffer sb = new StringBuffer(b.length); for (int i = 0; i < b.length; i++) { sb.append(String.format("%02X", b[i])); } return sb.toString(); } } 请:高手帮忙注释 sb.append(String.format("%02X", b[i]));是什么意思呢? 另外题目下面的(注:字符'A'的数值为0x41,字符'0'的数值为0x30) 这个对做题目的时候有什么影响,需要注意的呢?谢谢!~~

咩~~~建议楼主多多去看API,API有很详细的讲解. 1.String.format(String format, Object... args)方法是"使用指定的格式字符串和参数返回一个格式化字符串",其中format的用法与格式可以参看"java.util.Formatter"这个类.这道题中"byte2HexString()"方法中的"%02X"的意思是:将参数"b[i]"格式化为长度为"2"的,用"0"填充的,"16"进制整数.1字节1字节的转换,将结果追加到序列"sb"上,并将该序列以字符串形势返回,即你需要的结果. 2.字符"A",注意,是字符即"char类型".char类型对应为ASC2码.其中"A"对应"65","0"对应"48",利用"%02X"可以格式化为65的16进制41,48的16进制30. 希望对你有帮助...呼...
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-19
sb.append(String.format("%02X", b[i])); 的意思是把b[i]这个字节的值用两位的十六进制数表示出来,不足两位的话,前面补0。 然后把这个转换后的字符串添加到sb这个字符串的后面。
相似回答