Fix TUWENI-31 by creating a new method to allow 0x0 values for quantities
diff --git a/bytes/src/main/java/org/apache/tuweni/bytes/Bytes.java b/bytes/src/main/java/org/apache/tuweni/bytes/Bytes.java
index ea7c347..dfec53b 100644
--- a/bytes/src/main/java/org/apache/tuweni/bytes/Bytes.java
+++ b/bytes/src/main/java/org/apache/tuweni/bytes/Bytes.java
@@ -1470,6 +1470,29 @@
   }
 
   /**
+   * @return This value represented as a minimal hexadecimal string (without any leading zero, except if it's valued
+   *         zero or empty, in which case it returns 0x0).
+   */
+  default String toQuantityHexString() {
+    if (Bytes.EMPTY.equals(this)) {
+      return "0x0";
+    }
+    StringBuilder hex;
+    try {
+      hex = appendHexTo(new StringBuilder());
+    } catch (IOException e) {
+      // not thrown
+      throw new RuntimeException(e);
+    }
+
+    int i = 0;
+    while (i < hex.length() - 1 && hex.charAt(i) == '0') {
+      i++;
+    }
+    return "0x" + hex.substring(hex.charAt(hex.length() - 1) == '0' ? i : i++);
+  }
+
+  /**
    * @return This value represented as base 64.
    */
   default String toBase64String() {
diff --git a/bytes/src/test/java/org/apache/tuweni/bytes/CommonBytesTests.java b/bytes/src/test/java/org/apache/tuweni/bytes/CommonBytesTests.java
index c7aee0e..0d7efb2 100644
--- a/bytes/src/test/java/org/apache/tuweni/bytes/CommonBytesTests.java
+++ b/bytes/src/test/java/org/apache/tuweni/bytes/CommonBytesTests.java
@@ -434,6 +434,13 @@
   }
 
   @Test
+  void testQuantityHexString() {
+    assertEquals("0x0", h("0x").toQuantityHexString());
+    assertEquals("0x0", h("0x0000").toQuantityHexString());
+    assertEquals("0x1000001", h("0x01000001").toQuantityHexString());
+  }
+
+  @Test
   void testHexString() {
     assertEquals("0x", h("0x").toShortHexString());
     assertEquals("0x", h("0x0000").toShortHexString());