0

我正在尝试开发一个程序,将 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。

4

3 回答 3

4

要在开头追加而不是追加到最后,请使用以下命令:

sb.insert(0, text);

而不是这个:

sb.append(text);
于 2012-04-06T14:47:58.697 回答
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();

}
于 2012-04-06T14:50:20.063 回答
0

使用 StringBuilder 类的 insert 方法而不是 append 方法,偏移量为 0。

你可以在这里阅读更多。

于 2012-04-06T14:50:29.610 回答