我正在尝试开发一个将6个字节转换为十六进制表示的程序(如00:65:36:21:A5:BC)
用这种方法:
public static String toHexString(byte[] bytes) {
StringBuilder sb = new StringBuilder(18);
for (byte b : bytes) {
if (sb.length() > 0)
sb.append(':');
sb.append(String.format("%02x", b));
}
return sb.toString();
}
我正在获得一个好的格式,但现在我必须将两位数字反转。
我得到的00:65:36:21:A5:BC
我应该得到什么BC:A5:21:36:65:00
有人可以帮我完成最后一步吗?我正在努力取每一对数字并反转其位置(将BC放在开头,但不改变其顺序(如CB)
提前致谢
-G。
答案 0 :(得分:4)
要在开头追加而不是追加到最后一个,请使用:
sb.insert(0, text);
而不是:
sb.append(text);
答案 1 :(得分:0)
您可以使用反向常规for
代替for each
public static String toHexString(byte[] bytes) {
StringBuilder sb = new StringBuilder(18);
for (int i = bytes.length - 1; i >= 0; i--) {
if (sb.length() > 0)
sb.append(':');
sb.append(String.format("%02x", bytes[i]));
}
return sb.toString();
}
答案 2 :(得分:0)
使用StringBuilder类的insert方法而不是append方法,偏移量为0.
您可以阅读更多here。