Bytes

type bytes
function concat : bytes -> bytes -> bytes

Concatenate together two bytes arguments and return the result.

function concat_op (const s : bytes) : bytes is Bytes.concat(s , 0x7070)

Note that bytes_concat is deprecated.

function sub : nat -> nat -> bytes -> bytes

Extract the bytes between pos1 and pos2. Positions are zero indexed and inclusive. For example if you gave the input "ff7a7aff" to the following:

function slice_op (const s : bytes) : bytes is Bytes.sub(1n , 2n , s)

Note that bytes_slice is deprecated.

It would return "7a7a" rather than "ff7a" or "ff" or "7a".

function pack : 'a -> bytes

Converts Michelson data structures to a binary format for serialization.

⚠️ PACK and UNPACK are features of Michelson that are intended to be used by people that really know what they're doing. There are several failure cases (such as UNPACKing a lambda from an untrusted source), most of which are beyond the scope of this document. Don't use these functions without doing your homework first.

function id_string (const p : string) : option(string) is block {
const packed : bytes = bytes_pack(p) ;
} with (bytes_unpack(packed): option(string))
function unpack : bytes -> option 'a

Reverses the result of using pack on data.

As the conversion might fail an option type is returned.

⚠️ PACK and UNPACK are features of Michelson that are intended to be used by people that really know what they're doing. There are several failure cases (such as UNPACKing a lambda from an untrusted source), most of which are beyond the scope of this document. Don't use these functions without doing your homework first.

function id_string (const p : string) : option(string) is block {
const packed : bytes = bytes_pack(p) ;
} with (bytes_unpack(packed): option(string))
function length : bytes -> nat