This is an automated email from the ASF dual-hosted git repository.
danny0405 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hudi.git
The following commit(s) were added to refs/heads/master by this push:
new 84e9e7c5dd7 [HUDI-6610] Optimize the toHexString method in StringUtils
(#9313)
84e9e7c5dd7 is described below
commit 84e9e7c5dd71e2ee2cc4a3d671fbbfd463c1271b
Author: Ming Wei <[email protected]>
AuthorDate: Mon Jul 31 11:51:09 2023 +0800
[HUDI-6610] Optimize the toHexString method in StringUtils (#9313)
Co-authored-by: jameswei <[email protected]>
---
.../java/org/apache/hudi/common/util/StringUtils.java | 18 ++++++++++++++----
.../org/apache/hudi/common/util/TestStringUtils.java | 14 ++++++++++++++
2 files changed, 28 insertions(+), 4 deletions(-)
diff --git
a/hudi-common/src/main/java/org/apache/hudi/common/util/StringUtils.java
b/hudi-common/src/main/java/org/apache/hudi/common/util/StringUtils.java
index c91287bff70..24200a7a261 100644
--- a/hudi-common/src/main/java/org/apache/hudi/common/util/StringUtils.java
+++ b/hudi-common/src/main/java/org/apache/hudi/common/util/StringUtils.java
@@ -31,6 +31,7 @@ import java.util.stream.Stream;
*/
public class StringUtils {
+ public static final char[] HEX_CHAR = new char[]{'0', '1', '2', '3', '4',
'5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
public static final String EMPTY_STRING = "";
/**
@@ -86,11 +87,20 @@ public class StringUtils {
}
public static String toHexString(byte[] bytes) {
- StringBuilder sb = new StringBuilder(bytes.length * 2);
- for (byte b : bytes) {
- sb.append(String.format("%02x", b));
+ return new String(encodeHex(bytes));
+ }
+
+ public static char[] encodeHex(byte[] data) {
+ int l = data.length;
+ char[] out = new char[l << 1];
+ int i = 0;
+
+ for (int var4 = 0; i < l; ++i) {
+ out[var4++] = HEX_CHAR[(240 & data[i]) >>> 4];
+ out[var4++] = HEX_CHAR[15 & data[i]];
}
- return sb.toString();
+
+ return out;
}
public static boolean isNullOrEmpty(String str) {
diff --git
a/hudi-common/src/test/java/org/apache/hudi/common/util/TestStringUtils.java
b/hudi-common/src/test/java/org/apache/hudi/common/util/TestStringUtils.java
index d319d2a1c57..faa64104de7 100644
--- a/hudi-common/src/test/java/org/apache/hudi/common/util/TestStringUtils.java
+++ b/hudi-common/src/test/java/org/apache/hudi/common/util/TestStringUtils.java
@@ -99,4 +99,18 @@ public class TestStringUtils {
assertEquals(Arrays.asList("a", "b", "c"), StringUtils.split("a,b, c",
","));
assertEquals(Arrays.asList("a", "b", "c"), StringUtils.split("a,b,, c ",
","));
}
+
+ @Test
+ public void testHexString() {
+ String str = "abcd";
+ assertEquals(StringUtils.toHexString(str.getBytes()),
toHexString(str.getBytes()));
+ }
+
+ private static String toHexString(byte[] bytes) {
+ StringBuilder sb = new StringBuilder(bytes.length * 2);
+ for (byte b : bytes) {
+ sb.append(String.format("%02x", b));
+ }
+ return sb.toString();
+ }
}