hex

Library providing hexadecimal converters
Library hex
Module Hex
type t = [
| `Hex of string
]

The type var hexadecimal values.

Characters

val of_char : char -> char * char

of_char c is the the hexadecimal encoding of the character c.

val to_char : char -> char -> char

to_char x y is the character correspondong to the xy hexadecimal encoding.

Strings

val of_string : ?ignore:char list -> string -> t

of_string s is the hexadecimal representation of the binary string s. If ignore is set, skip the characters in the list when converting. E.g. of_string ~ignore:[' '] "Mirage OS" is `Hex "4d69726167654f53", of_string "Mirage OS" is `Hex "4d6972616765204f53" (with a "20" before the "OS" ("4f53")). The default value of ignore is []).

If you have a hex string as input (i.e. "4f53"), you can use to_string (`Hex "4f53") to decode it to a binary string ("OS").

val to_string : t -> string

to_string t is the binary string s such that of_string s is t.

Bytes

val of_bytes : ?ignore:char list -> bytes -> t

of_bytes s is the hexadecimal representation of the binary string s. If ignore is set, skip the characters in the list when converting. Eg of_bytes ~ignore:[' '] "a f". The default value of ignore is []).

val to_bytes : t -> bytes

to_bytes t is the binary string s such that of_bytes s is t.

Cstruct

val of_cstruct : ?ignore:char list -> Cstruct.t -> t

of_cstruct buf is the hexadecimal representation of the buffer buf.

val to_cstruct : t -> Cstruct.t

to_cstruct t is the buffer b such that of_cstruct b is t.

Bigstring

val of_bigstring : ?ignore:char list -> Cstruct.buffer -> t

of_bigstring buf is the hexadecimal representation of the buffer buf.

val to_bigstring : t -> Cstruct.buffer

to_bigstring t is the buffer b such that of_bigstring b is t.

Debugging

val hexdump : ?print_row_numbers:bool -> ?print_chars:bool -> t -> unit

hexdump h dumps the hex encoding to stdout in the following format:

       00000000: 6865 6c6c 6f20 776f 726c 6420 6865 6c6c  hello world hell
       00000010: 6f20 776f 726c 640a                      o world.

This is the same format as emacs hexl-mode, and is a very similar format to hexdump -C. '\t' and '\n' are printed as '.'.in the char column.

print_row_numbers and print_chars both default to true. Setting either to false does not print the column.

val hexdump_s : ?print_row_numbers:bool -> ?print_chars:bool -> t -> string

Same as hexdump except returns a string.

Pretty printing

val pp : Format.formatter -> t -> unit

pp fmt t will output a human-readable hex representation of t to the formatter fmt.

val show : t -> string

show t will return a human-readable hex representation of t as a string.