From a bytes array:

You can create Bytes objects by wrapping a native byte array:

Bytes bytes = Bytes.wrap(new byte[] {1, 2, 3, 4});

Note the underlying array is not copied - any change to the byte array will change the Bytes object’s behavior.

You can also wrap with an offset and a size to select a portion of the array:

// wrapping with an offset of 2 and a size of one byte
Bytes bytes = Bytes.wrap(new byte[] {1, 2, 3, 4}, 2, 1);

From a hex string:

You can create Bytes objects from a hexadecimal-encoded string with the fromHexString method:

Bytes bytes = Bytes.fromHexString("0xdeadbeef");

The "0x" prefix is optional.

However, this requires an even-sized string. For example, this succeeds:

Bytes bytes = Bytes.fromHexString("01FF2A");

This fails:

Bytes bytes = Bytes.fromHexString("1FF2A");

You can circumvent this with the fromHexStringLenient method:

Bytes bytes = Bytes.fromHexStringLenient("1FF2A");

From a base64-encoded string:

You can create Bytes objects from a base64-encoded string with the fromBase64String method:

Bytes value = Bytes.fromBase64String("deadbeefISDAbest");

From primitive types

We also have convenience methods to create Bytes objects from primitive types.

Bytes.of() takes a variadic argument of bytes:

Bytes value = Bytes.of(0x00, 0x01, 0xff, 0x2a);
Bytes value = Bytes.ofUnsignedInt(42);

More wrapping

Use Bytes.wrapByteBuf(buffer) to wrap a Netty ByteBuf object as a Bytes object.

ByteBuf buffer = Unpooled.buffer(42);
Bytes.wrapByteBuf(buffer);

You can apply an offset and size parameter:

Bytes value = Bytes.wrapByteBuf(buffer, 1, 1);

Use Bytes.wrapByteBuffer(buffer) to wrap a ByteBuffer object as a Bytes object.

Bytes.wrapByteBuffer(buffer);

You can apply an offset and size parameter:

Bytes value = Bytes.wrapByteBuffer(buffer, 1, 1);

Use Bytes.wrapBuffer(buffer) to wrap a Vert.x Buffer object as a Bytes object.

Bytes.wrapBuffer(buffer);

You can apply an offset and size parameter:

Bytes value = Bytes.wrapBuffer(buffer, 1, 1);

Random

You can create random bytes objects of a given length with the Bytes.random() method:

// create a Bytes object of 20 bytes:
Bytes.random(20);

Create a Bytes object with our own Random implementation:

Random random = new SecureRandom();
...
Bytes.random(20, random);