Drop commons-codec dependency and extract the Hex encoding function.

This reduces the shaded jar size by 135K (>25%).
diff --git a/commons-rng-examples/examples-stress/pom.xml b/commons-rng-examples/examples-stress/pom.xml
index 04f315b..3c01926 100644
--- a/commons-rng-examples/examples-stress/pom.xml
+++ b/commons-rng-examples/examples-stress/pom.xml
@@ -64,11 +64,6 @@
       <groupId>info.picocli</groupId>
       <artifactId>picocli</artifactId>
     </dependency>
-    <dependency>
-      <groupId>commons-codec</groupId>
-      <artifactId>commons-codec</artifactId>
-      <version>1.13</version>
-    </dependency>
   </dependencies>
 
   <build>
diff --git a/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/RNGUtils.java b/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/RNGUtils.java
index d5d4f79..a82a393 100644
--- a/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/RNGUtils.java
+++ b/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/RNGUtils.java
@@ -25,6 +25,13 @@
  * Utility methods for a {@link UniformRandomProvider}.
  */
 final class RNGUtils {
+    /**
+     * Used to build 4-bit numbers as Hex.
+     */
+    private static final char[] HEX_DIGITS = {
+        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
+    };
+
     /** No public construction. */
     private RNGUtils() {}
 
@@ -180,4 +187,29 @@
             throw new ApplicationException("Failed to parse RandomSource argument: " + argument, ex);
         }
     }
+
+    /**
+     * Converts an array of bytes into an array of characters representing the hexadecimal
+     * values of each byte in order. The returned array will be double the length of the
+     * passed array, as it takes two characters to represent any given byte.
+     *
+     * <p>This can be used to encode byte array seeds into a text representation.</p>
+     *
+     * <p>Adapted from commons-codec.</p>
+     *
+     * @param data a byte[] to convert to Hex characters
+     * @return A char[] containing the lower-case Hex representation
+     */
+    static char[] encodeHex(final byte[] data) {
+        final int l = data.length;
+        final char[] out = new char[l << 1];
+        // Two characters form the hex value
+        for (int i = 0; i < l; i++) {
+            // Upper 4-bits
+            out[2 * i]     = HEX_DIGITS[(0xf0 & data[i]) >>> 4];
+            // Lower 4-bits
+            out[2 * i + 1] = HEX_DIGITS[ 0x0f & data[i]];
+        }
+        return out;
+    }
 }
diff --git a/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/StressTestCommand.java b/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/StressTestCommand.java
index 32d9082..9eaa405 100644
--- a/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/StressTestCommand.java
+++ b/commons-rng-examples/examples-stress/src/main/java/org/apache/commons/rng/examples/stress/StressTestCommand.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.rng.examples.stress;
 
-import org.apache.commons.codec.binary.Hex;
 import org.apache.commons.rng.UniformRandomProvider;
 import org.apache.commons.rng.simple.RandomSource;
 
@@ -629,7 +628,7 @@
             sb.append(C).append(N);
             sb.append(C).append("RandomSource: ").append(randomSource.name()).append(N);
             sb.append(C).append("RNG: ").append(rng.toString()).append(N);
-            sb.append(C).append("Seed: ").append(Hex.encodeHexString(seed, true)).append(N);
+            sb.append(C).append("Seed: ").append(RNGUtils.encodeHex(seed)).append(N);
             sb.append(C).append(N);
 
             // Match the output of 'java -version', e.g.