Module TzPervasives.Bytes

include module type of Stdlib.Bytes
val length : bytes -> int
val get : bytes -> int -> char
val set : bytes -> int -> char -> unit
val create : int -> bytes
val make : int -> char -> bytes
val init : int -> ( int -> char ) -> bytes
val empty : bytes
val copy : bytes -> bytes
val of_string : string -> bytes
val to_string : bytes -> string
val sub : bytes -> int -> int -> bytes
val sub_string : bytes -> int -> int -> string
val extend : bytes -> int -> int -> bytes
val fill : bytes -> int -> int -> char -> unit
val blit : bytes -> int -> bytes -> int -> int -> unit
val blit_string : string -> int -> bytes -> int -> int -> unit
val concat : bytes -> bytes list -> bytes
val cat : bytes -> bytes -> bytes
val iter : ( char -> unit ) -> bytes -> unit
val iteri : ( int -> char -> unit ) -> bytes -> unit
val map : ( char -> char ) -> bytes -> bytes
val mapi : ( int -> char -> char ) -> bytes -> bytes
val fold_left : ( 'a -> char -> 'a ) -> 'a -> bytes -> 'a
val fold_right : ( char -> 'a -> 'a ) -> bytes -> 'a -> 'a
val for_all : ( char -> bool ) -> bytes -> bool
val exists : ( char -> bool ) -> bytes -> bool
val trim : bytes -> bytes
val escaped : bytes -> bytes
val index : bytes -> char -> int
val index_opt : bytes -> char -> int option
val rindex : bytes -> char -> int
val rindex_opt : bytes -> char -> int option
val index_from : bytes -> int -> char -> int
val index_from_opt : bytes -> int -> char -> int option
val rindex_from : bytes -> int -> char -> int
val rindex_from_opt : bytes -> int -> char -> int option
val contains : bytes -> char -> bool
val contains_from : bytes -> int -> char -> bool
val rcontains_from : bytes -> int -> char -> bool
val uppercase : bytes -> bytes
val lowercase : bytes -> bytes
val capitalize : bytes -> bytes
val uncapitalize : bytes -> bytes
val uppercase_ascii : bytes -> bytes
val lowercase_ascii : bytes -> bytes
val capitalize_ascii : bytes -> bytes
val uncapitalize_ascii : bytes -> bytes
type t = bytes
val compare : t -> t -> int
val equal : t -> t -> bool
val starts_with : prefix:bytes -> bytes -> bool
val ends_with : suffix:bytes -> bytes -> bool
val unsafe_to_string : bytes -> string
val unsafe_of_string : string -> bytes
val split_on_char : char -> bytes -> bytes list
val to_seq : t -> char Stdlib.Seq.t
val to_seqi : t -> (int * char) Stdlib.Seq.t
val of_seq : char Stdlib.Seq.t -> t
val get_utf_8_uchar : t -> int -> Stdlib.Uchar.utf_decode
val set_utf_8_uchar : t -> int -> Stdlib.Uchar.t -> int
val is_valid_utf_8 : t -> bool
val get_utf_16be_uchar : t -> int -> Stdlib.Uchar.utf_decode
val set_utf_16be_uchar : t -> int -> Stdlib.Uchar.t -> int
val is_valid_utf_16be : t -> bool
val get_utf_16le_uchar : t -> int -> Stdlib.Uchar.utf_decode
val set_utf_16le_uchar : t -> int -> Stdlib.Uchar.t -> int
val is_valid_utf_16le : t -> bool
val get_uint8 : bytes -> int -> int
val get_int8 : bytes -> int -> int
val get_uint16_ne : bytes -> int -> int
val get_uint16_be : bytes -> int -> int
val get_uint16_le : bytes -> int -> int
val get_int16_ne : bytes -> int -> int
val get_int16_be : bytes -> int -> int
val get_int16_le : bytes -> int -> int
val get_int32_ne : bytes -> int -> int32
val get_int32_be : bytes -> int -> int32
val get_int32_le : bytes -> int -> int32
val get_int64_ne : bytes -> int -> int64
val get_int64_be : bytes -> int -> int64
val get_int64_le : bytes -> int -> int64
val set_uint8 : bytes -> int -> int -> unit
val set_int8 : bytes -> int -> int -> unit
val set_uint16_ne : bytes -> int -> int -> unit
val set_uint16_be : bytes -> int -> int -> unit
val set_uint16_le : bytes -> int -> int -> unit
val set_int16_ne : bytes -> int -> int -> unit
val set_int16_be : bytes -> int -> int -> unit
val set_int16_le : bytes -> int -> int -> unit
val set_int32_ne : bytes -> int -> int32 -> unit
val set_int32_be : bytes -> int -> int32 -> unit
val set_int32_le : bytes -> int -> int32 -> unit
val set_int64_ne : bytes -> int -> int64 -> unit
val set_int64_be : bytes -> int -> int64 -> unit
val set_int64_le : bytes -> int -> int64 -> unit
val unsafe_get : bytes -> int -> char
val unsafe_set : bytes -> int -> char -> unit
val unsafe_blit : bytes -> int -> bytes -> int -> int -> unit
val unsafe_blit_string : string -> int -> bytes -> int -> int -> unit
val unsafe_fill : bytes -> int -> int -> char -> unit
include module type of Tezos_stdlib.TzBytes
val logand : bytes -> bytes -> bytes

Bitwise AND on bytes.

If the arguments have different lengths, the prefix of the longer bytes is cut to have the same length as the shorter one before taking bitwise AND.

Example:

logand (Bytes.of_string "\xff\x0f") (Bytes.of_string "\xff") = Bytes.of_string "\x0f"

val logor : bytes -> bytes -> bytes

Bitwise OR on bytes.

If the arguments have different lengths, the shorter bytes is 0-padded on the left to have the same length before taking bitwise OR.

Example:

logor (Bytes.of_string "\xf0\x00") (Bytes.of_string "\x0f") = Bytes.of_string "\xf0\x0f"

val logxor : bytes -> bytes -> bytes

Bitwise XOR on bytes.

If the arguments have different lengths, the shorter bytes is 0-padded on the left to have the same length before taking bitwise XOR.

Example:

logxor (Bytes.of_string "\xf0\xff") (Bytes.of_string "\x0f") = Bytes.of_string "\xf0\xf0"

val lognot : bytes -> bytes

Bitwise NOT on bytes.

Example:

lognot (Bytes.of_string "\xff\xf0\xf0") = Bytes.of_string "\x00\x0f\x0f"

val shift_left : bytes -> int -> bytes

Logical shift left on bytes.

shift_left bs nbits shifts the byte contents left by nbits bits, using big-endian encoding. The vacated bits on the right are filled with 0s. The shifted bits are minimally 0-padded on the left in order to keep all the original bits: for example, 0x1234 LSL 1 is 0x002468, instead of 0x2468 (the left most bit is lost) or 0x00002468 (not minimal padding).

shift_left bs nbits raises Invalid_argument "shift_left" when nbits < 0.

Examples:

  • shift_left (Bytes.of_string "\x12\x34") 0 = Bytes.of_string "\x12\x34"
  • shift_left (Bytes.of_string "\xff\xff") 1 = Bytes.of_string "\x01\xff\xfe"
  • shift_left (Bytes.of_string "\x12\x34") 1 = Bytes.of_string "\x00\x24\x68" (not "\x24\x68")
  • shift_left (Bytes.of_string "\x00\x12\x34") 1 = Bytes.of_string "\x00\x00\x24\x68" (not "\x00\x24\x68")
  • shift_left (Bytes.of_string "\x00\x12\x34") 18 = Bytes.of_string "\x00\x48\xd0\x00\x00" (not "\x48\xd0\x00\x00")
  • shift_left Bytes.empty 1 = Bytes.of_string "\x00"
val shift_right : bytes -> int -> bytes

Logical shift right on bytes, using big-endian encoding.

shift_right bs nbits shifts the byte contents right by nbits bits, using big-endian encoding. The shifted bits are minimally 0-padded on the left to fit in bytes. For example, 0x123499 LSR 9 is 0xx091a, instead of 0x00091a (not minimal padding).

shift_right bs nbits raises Invalid_argument "shift_right" when nbits < 0.

Examples:

  • shift_right (Bytes.of_string "\x12\x34") 0 = Bytes.of_string "\x12\x34"
  • shift_right (Bytes.of_string "\x12\x34") 1 = Bytes.of_string "\x09\x1a"
  • shift_right (Bytes.of_string "\x12\x34") 8 = Bytes.of_string "\x12" (not "\x00\x12")
  • shift_right (Bytes.of_string "\x12\x34\x99") 9 = Bytes.of_string "\x09\xa"
  • shift_right (Bytes.of_string "\x12\x34") 18 = Bytes.empty