From 12a415e3d5cabae1d0bdfca64156c2abcebdc9d7 Mon Sep 17 00:00:00 2001 From: P0nk Date: Thu, 15 Jul 2021 23:48:47 +0200 Subject: [PATCH] Add simple hex utils that delegate to Netty The goal is to use libraries for this sort of common stuff --- src/main/java/tools/HexTool.java | 11 +++++++++++ src/test/java/tools/HexToolTest.java | 22 ++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 src/test/java/tools/HexToolTest.java diff --git a/src/main/java/tools/HexTool.java b/src/main/java/tools/HexTool.java index e610055e95..f23e2ac5fc 100644 --- a/src/main/java/tools/HexTool.java +++ b/src/main/java/tools/HexTool.java @@ -22,6 +22,7 @@ package tools; import constants.string.CharsetConstants; +import io.netty.buffer.ByteBufUtil; import java.io.ByteArrayOutputStream; @@ -105,4 +106,14 @@ public class HexTool { return ""; } + /** + * Get upper case hex dump + */ + public static String bytesToHex(byte[] bytes) { + return ByteBufUtil.hexDump(bytes).toUpperCase(); + } + + public static byte[] hexToBytes(String hex) { + return ByteBufUtil.decodeHexDump(hex); + } } diff --git a/src/test/java/tools/HexToolTest.java b/src/test/java/tools/HexToolTest.java new file mode 100644 index 0000000000..8ea59c403a --- /dev/null +++ b/src/test/java/tools/HexToolTest.java @@ -0,0 +1,22 @@ +package tools; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class HexToolTest { + + @Test + void upperCaseHexToBytesAndBack() { + String hex = "A1B2C3"; + byte[] bytes = HexTool.hexToBytes(hex); + assertEquals(hex, HexTool.bytesToHex(bytes)); + } + + @Test + void mixedCaseHexToBytesAndBack() { + String hex = "aB5DaA"; + byte[] bytes = HexTool.hexToBytes(hex); + assertEquals(hex.toUpperCase(), HexTool.bytesToHex(bytes)); + } +} \ No newline at end of file