java - 在java中将byte[]数组从MySQL转换为带有破折号的十六进制?

标签 java mysql hex arrays

我正在寻找一个 JavaUtil 类,如果它已经可以将 byte[] 数组转换为 带破折号的 hexString。我环顾四周找不到解决此类问题的方法。

这是我的场景:

Byte[] 数组存储在 MySQL 中,如 here 所解释。

所以当我运行时

select HEX(id) as hexi, (
 insert(
   insert(
     insert(
       insert(
         hex(
           concat(substr(id,5,4),substr(id,3,2),
                  substr(id,1,2),substr(id,9,8))
         ),
         9,0,'-'),
     14,0,'-'),
   19,0,'-'),
 24,0,'-')
) as hex_dashes from my_table;

我明白了

hexi                                              hex_dashes
22E179345A5C11E69A64F9BBBC7C3AAC  5A5C11E6-7934-22E1-9A64-F9BBBC7C3AAC

您很快就会注意到 hex_dashes 是 hexi 字符串的重新排列版本(在 hex_dashes 中的第二个破折号之后查找 22E1 是 hexi 的起始字符串。上面链接的文章中解释了如何完成此重新排列)。

在上面的查询中,id类型是byte[]

现在,我想要一个 java Util 函数返回给定 byte[] 数组的 hex_dashes 字符串。

我有这个方法,它返回 hexi 但不返回 hex_string。

static final String HEXES = "0123456789ABCDEF";

    public static String byteArrayToHexString( byte [] raw ) {
        if ( raw == null ) {
            return null;
        }
        final StringBuilder hex = new StringBuilder( 2 * raw.length );
        for ( final byte b : raw ) {
            hex.append(HEXES.charAt((b & 0xF0) >> 4))
                    .append(HEXES.charAt((b & 0x0F)));
        }
        return hex.toString();
    }

我想知道是否有任何方法可以用破折号得到十六进制。

谢谢

最佳答案

您可以使用以下实用方法:

static String hexDashes(byte[] raw) {
        final String hex = byteArrayToHexString(raw);
        return String.format("%s-%s-%s-%s-%s", hex.substring(8, 16), hex.substring(4, 8), hex.substring(0, 4), hex.substring(16, 20), hex.substring(20, 32));
}

它获取原始的byte[],将其转换为十六进制,然后将计算出的字符串中的相应子字符串插入到破折号之间。如果您已经计算了之前使用的十六进制字符串,那么将其用作参数 hex 会更快。您还可以使用字符串连接来代替 String.format(...)

关于java - 在java中将byte[]数组从MySQL转换为带有破折号的十六进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38794529/

相关文章:

Java 命令提示符命令抛出 "No such File or Directory"

java - MySQL 数据库服务器对比phpmyadmin

Java生成代码字节256*256 & 0xff

math - 如何将无符号数从有符号数转换为无符号数(二进制和十六进制)?

perl - 如何在 Perl 中将十六进制转换为字符串

java - 在 ViewAdapter 上加载图像资源

java - Netbeans 将操作添加到输出窗口

java - Android Studio 能否自动将布局 XML 文件中的引用提取到 Activity java 文件中?

MySQL 查询 DISTINCT,COUNT

mysql - MySQL 中的 Propel 和二进制字符串