module Binary_packing:sig..end
Functions ending in _int should not be used on 32 bit programs because native ocaml ints will not be big enough.
pos arguments refer to the location in the buf string.
We support big and little endian ints. Note that for an 8 bit (1 byte) integer, there
is no difference because endian-ness only changes the order of bytes, not bits.
typeendian =[ `Big_endian | `Little_endian ]
val unpack_signed_8 : buf:string -> pos:int -> intval pack_signed_8 : buf:string -> pos:int -> int -> unitval unpack_unsigned_8 : buf:string -> pos:int -> intval pack_unsigned_8 : buf:string -> pos:int -> int -> unitval unpack_signed_16 : byte_order:endian -> buf:string -> pos:int -> int_big_endian or _little_endian are faster than the ones
with explicit byte_order argument:
Name | Run time | S. dev. | Warnings
---------------------------------- | -------- | ------- | --------
pack_signed_16_little_endian | 4 ns | 0 ns |
unpack_signed_16_little_endian | 5 ns | 0 ns |
pack_signed_32_int | 12 ns | 0 ns |
unpack_signed_32_int | 12 ns | 0 ns |
pack_signed_32_int_little_endian | 4 ns | 0 ns |
unpack_signed_32_int_little_endian | 5 ns | 0 ns | M
pack_signed_64_int | 21 ns | 0 ns | M
unpack_signed_64_int | 21 ns | 0 ns | M
pack_signed_64_little_endian | 8 ns | 0 ns |
unpack_signed_64_little_endian | 9 ns | 0 ns | M
val pack_signed_16 : byte_order:endian -> buf:string -> pos:int -> int -> unitval unpack_unsigned_16_big_endian : buf:string -> pos:int -> intval unpack_unsigned_16_little_endian : buf:string -> pos:int -> intval pack_unsigned_16_big_endian : buf:string -> pos:int -> int -> unitval pack_unsigned_16_little_endian : buf:string -> pos:int -> int -> unitval unpack_signed_16_big_endian : buf:string -> pos:int -> intval unpack_signed_16_little_endian : buf:string -> pos:int -> intval pack_signed_16_big_endian : buf:string -> pos:int -> int -> unitval pack_signed_16_little_endian : buf:string -> pos:int -> int -> unitval unpack_unsigned_16 : byte_order:endian -> buf:string -> pos:int -> intval pack_unsigned_16 : byte_order:endian -> buf:string -> pos:int -> int -> unitval unpack_signed_32 : byte_order:endian -> buf:string -> pos:int -> int32val unpack_signed_32_int : byte_order:endian -> buf:string -> pos:int -> intval pack_signed_32 : byte_order:endian -> buf:string -> pos:int -> Int32.t -> unitval pack_signed_32_int : byte_order:endian -> buf:string -> pos:int -> int -> unitval unpack_unsigned_32_int_big_endian : buf:string -> pos:int -> intval unpack_unsigned_32_int_little_endian : buf:string -> pos:int -> intval pack_unsigned_32_int_big_endian : buf:string -> pos:int -> int -> unitval pack_unsigned_32_int_little_endian : buf:string -> pos:int -> int -> unitval unpack_signed_32_int_big_endian : buf:string -> pos:int -> intval unpack_signed_32_int_little_endian : buf:string -> pos:int -> intval pack_signed_32_int_big_endian : buf:string -> pos:int -> int -> unitval pack_signed_32_int_little_endian : buf:string -> pos:int -> int -> unitval unpack_unsigned_32_int : byte_order:endian -> buf:string -> pos:int -> intval pack_unsigned_32_int : byte_order:endian -> buf:string -> pos:int -> int -> unitval unpack_signed_64 : byte_order:endian -> buf:string -> pos:int -> int64val unpack_signed_64_int : byte_order:endian -> buf:string -> pos:int -> intval pack_signed_64 : byte_order:endian -> buf:string -> pos:int -> Int64.t -> unitval pack_signed_64_int : byte_order:endian -> buf:string -> pos:int -> int -> unitval unpack_signed_64_int_little_endian : buf:string -> pos:int -> intval pack_signed_64_int_little_endian : buf:string -> pos:int -> int -> unitval unpack_signed_64_int_big_endian : buf:string -> pos:int -> intval pack_signed_64_int_big_endian : buf:string -> pos:int -> int -> unitval unpack_signed_64_big_endian : buf:string -> pos:int -> int64val unpack_signed_64_little_endian : buf:string -> pos:int -> int64val pack_signed_64_big_endian : buf:string -> pos:int -> int64 -> unitval pack_signed_64_little_endian : buf:string -> pos:int -> int64 -> unitval unpack_float : byte_order:endian -> buf:string -> pos:int -> floatval pack_float : byte_order:endian -> buf:string -> pos:int -> float -> unitval unpack_padded_fixed_string : ?padding:char -> buf:string -> pos:int -> len:int -> unit -> stringlen from buf starting at
pos. Return a string containing only the non-padding characters. The default
padding is '\x00'.val pack_padded_fixed_string : ?padding:char -> buf:string -> pos:int -> len:int -> string -> unitlen.
Place it in buf starting at position pos. If the length of the string is less
then len pad it with the padding characters until its length is equal to len. If
the string is longer than len raise Invalid_argument. The default padding is
'\x00'.val test : unit -> unit