static long decodeUnsignedLong(final String number) {
    String parsable = number;
    int radix = 10;
    if (number.startsWith("0x")) {
      radix = 16;
      parsable = number.substring(2);
    } else if (!number.matches("\\d+")) {
      // presume naked hex
      radix = 16;
    }

    BigInteger bi = new BigInteger(parsable, radix);
    if (bi.bitCount() > 64) {
      throw new NumberFormatException("Number larger than uint64");
    }

    return bi.longValue();
  }
Utility to decode string to unsigned long

@param number to be decoded
@return long value, unsigned
evm/src/main/java/org/hyperledger/besu/evm/internal/Words.java