diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/codec/binary/HexUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/codec/binary/HexUtil.java
index 0d23863a4..b13d98270 100644
--- a/hutool-core/src/main/java/org/dromara/hutool/core/codec/binary/HexUtil.java
+++ b/hutool-core/src/main/java/org/dromara/hutool/core/codec/binary/HexUtil.java
@@ -23,13 +23,13 @@ import java.math.BigInteger;
* 例如十进制数57,在二进制写作111001,在16进制写作39。
* 像java,c这样的语言为了区分十六进制和十进制数值,会在十六进制数的前面加上 0x,比如0x20是十进制的32,而不是十进制的20
*
- * + *
* 此工具类为16进制组合工具类,除了继承{@link Hex}实现编码解码外,提供其它转换类和识别类工具。 * * @author Looly * @see Hex */ -public class HexUtil extends Hex{ +public class HexUtil extends Hex { // region ----- Color /** @@ -233,11 +233,29 @@ public class HexUtil extends Hex{ * @return 格式化后的字符串 */ public static String format(final String hexStr) { + return format(hexStr, StrUtil.EMPTY); + } + + /** + * 格式化Hex字符串,结果为每2位加一个空格,类似于: + *
+ * e8 8c 67 03 80 cb 22 00 95 26 8f + *+ * + * @param hexStr Hex字符串 + * @param prefix 自定义前缀,如0x + * @return 格式化后的字符串 + */ + public static String format(final String hexStr, String prefix) { + if (null == prefix) { + prefix = StrUtil.EMPTY; + } + final int length = hexStr.length(); - final StringBuilder builder = StrUtil.builder(length + length / 2); - builder.append(hexStr.charAt(0)).append(hexStr.charAt(1)); + final StringBuilder builder = StrUtil.builder(length + length / 2 + (length / 2 * prefix.length())); + builder.append(prefix).append(hexStr.charAt(0)).append(hexStr.charAt(1)); for (int i = 2; i < length - 1; i += 2) { - builder.append(CharUtil.SPACE).append(hexStr.charAt(i)).append(hexStr.charAt(i + 1)); + builder.append(CharUtil.SPACE).append(prefix).append(hexStr.charAt(i)).append(hexStr.charAt(i + 1)); } return builder.toString(); } diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/util/HexUtilTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/util/HexUtilTest.java index 64512ca45..a50cf4498 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/util/HexUtilTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/util/HexUtilTest.java @@ -85,6 +85,13 @@ public class HexUtilTest { Assertions.assertEquals("e8 c6 70 38 0c b2 20 09 52 68 f4 02 21 fc 74 8f a6 ac 39 d6 e9 30 e6 3c 30 da 68 ba d9 7f 88 5d", formatHex); } + @Test + public void formatHexTest2(){ + final String hex = "e8c670380cb220095268f40221fc748fa6"; + final String formatHex = HexUtil.format(hex, "0x"); + Assertions.assertEquals("0xe8 0xc6 0x70 0x38 0x0c 0xb2 0x20 0x09 0x52 0x68 0xf4 0x02 0x21 0xfc 0x74 0x8f 0xa6", formatHex); + } + @Test public void decodeHexTest(){ final String s = HexUtil.encodeStr("6"); diff --git a/hutool-db/src/test/resources/config/db.setting b/hutool-db/src/test/resources/config/db.setting index 20ed4fd01..2472a9913 100644 --- a/hutool-db/src/test/resources/config/db.setting +++ b/hutool-db/src/test/resources/config/db.setting @@ -81,3 +81,10 @@ url = jdbc:sqlserver://looly.database.chinacloudapi.cn:1433;database=test;encryp user = looly@looly pass = 123 remarks = true + +# 测试用dm数据库 +[dm] +url = jdbc:dm://127.0.0.1:30236/schema=dm8_test +user = SYSDBA +pass = 123456789 +remarks = true