default int readUnsignedByte() {
    if (isZeroLengthString()) {
      // Decode an empty string (0x80) as an unsigned byte with value 0
      readBytes();
      return 0;
    }
    return readByte() & 0xFF;
  }
Reads the next item of this input (which must be exactly 1 byte) as an unsigned byte.

@return The value of the next item interpreted as an unsigned byte.
@throws RLPException if the next item to read is a list, the input is at the end of its current
    list (and {@link #leaveList()} hasn't been called) or if the next item is not a single byte
    long.
ethereum/rlp/src/main/java/org/hyperledger/besu/ethereum/rlp/RLPInput.java