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();
+  }
 }

Reply via email to