You can extract values from a bytes object into native Java objects such as ints and longs, bytes, byte arrays and so on.

Note all the methods here take an optional ByteOrder argument, defaulting to big endian by default.

toInt() and toLong()

The method toInt() and the method toLong() respectively translate the bytes values into an int or a long, requiring respectively the value to be at most 4 or 8 bytes long.

get(i)

The get(i) method provides the byte at index i.

getInt(i) and getLong(i)

The method getInt() and the method getLong() respectively return the next 4 or 8 bytes into an int or a long.

toArray() and toArrayUnsafe()

The method toArray copies the bytes of the object into a new bytes array.

The method toArrayUnsafe makes available the underlying byte array of the object - modifying it changes the Bytes object. Note this is more performant as it doesn’t allocate new memory.

To BigIntegers

The method toUnsignedBigInteger creates a new unsigned BigInteger object with the contents of the Bytes object. You can also use the method toBigInteger to represent Bytes as a signed integer, using the two’s-complement representation.

Transforming Bytes into strings

There is a sleuth of options to turn bytes into strings, and they all have different use cases.

  • The method toHexString provides the value represented as hexadecimal, starting with “0x”.
  • The method toUnprefixedHexString provides the value represented as hexadecimal, no “0x” prefix though.
  • The method toShortHexString provides the value represented as a minimal hexadecimal string (without any leading zero).
  • The method toQuantityHexString provides the 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).
  • The method toEllipsisHexString provides the first 3 bytes and last 3 bytes represented as hexadecimal strings, joined with an ellipsis (...).

By default, toString() calls toHexString().