大侠留步,希望能帮助我解决此问题,以下是我的代码: public static String getHexString(byte[] b) {
String str = "";
for (int i = 0; i < b.length; i++) {
String hex = Integer.toHexString(b[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
str = str + hex;
}
return str.toUpperCase();
}就是一个转码的方法,没什么错误,但奇怪的是在windows和Linux下竟然会有不同的结果,真的不明白为什么。
路过的大虾们希望能施一下援手^_^
String str = "";
for (int i = 0; i < b.length; i++) {
String hex = Integer.toHexString(b[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
str = str + hex;
}
return str.toUpperCase();
}就是一个转码的方法,没什么错误,但奇怪的是在windows和Linux下竟然会有不同的结果,真的不明白为什么。
路过的大虾们希望能施一下援手^_^
解决方案 »
- 关于Java构造函数的问题
- (古怪问题)如何获得一个值为空的变量的定义类名?
- 函数的覆盖除了要求方法名和参数类型要相同以外,是否还要求返回类型也要相同?
- 格式化数字和日期真是一大块内容啊!!!
- 谁能告诉告诉我!
- 怎样将小写金额转换成大写金额?比如将100000.00转换成十万元整,将108000.00转换成十万零八千元整。
- 请问要在当用户按下某个按钮时弹出另一个窗口,应该如何在程序里实现?工具用的是jbuilder。
- 老兄:帮我一把
- 关于JDBC2.0的问题(50分!!!!)
- 请问在java bean里如何存取Application变量?
- 读取文件、写文件乱码
- Java中用getClass().getResource()读取jar文件中.jpg文件产生错误
* 将字节数组转成 16 进制的字符串来表示,每个字节采用两个字符表表示
*
* @param bys 需要转换成 16 进制的字节数组
* @return
*/
public static String bytes2Hex(byte[] bys) {
if(bys == null) {
return null;
}
char[] chs = new char[bys.length * 2];
for(int i = 0, offset = 0; i < bys.length; i++) {
chs[offset++] = HEX[bys[i] >> 4 & 0xf];
chs[offset++] = HEX[bys[i] & 0xf];
}
return new String(chs);
}
}
String.format估计更简单
StringBuilder sb = new StringBuilder();
for (byte bb : b) {
sb.append(String.format("%02X", bb));
}
String s = sb.toString();