Bi_vintVint: variable-length representation of integers
This module currently provides only conversions between vint and the OCaml int type. Here are the current limits of OCaml ints on 32-bit and 64-bit systems:
word length (bits) 32 64
int length (bits) 31 63
min_int (lowest signed int) 0x40000000 0x4000000000000000
-1073741824 -4611686018427387904
max_int (greatest signed int) 0x3fffffff 0x3fffffffffffffff
1073741823 4611686018427387903
lowest unsigned int 0x0 0x0
0 0
greatest unsigned int 0x7fffffff 0x7fffffffffffffff
2147483647 9223372036854775807
maximum vint length (data bits) 31 63
maximum vint length (total bytes) 5 9Unsigned int. Note that ints (signed) and uints use the same representation for integers within [0, max_int].
val uvint_of_uint : ?buf:Bi_outbuf.t -> uint -> stringConvert an unsigned int to a vint.
val svint_of_int : ?buf:Bi_outbuf.t -> int -> stringConvert a signed int to a vint.
val uint_of_uvint : string -> uintInterpret a vint as an unsigned int.
val write_uvint : Bi_outbuf.t -> uint -> unitWrite an unsigned int to a buffer.
val write_svint : Bi_outbuf.t -> int -> unitWrite a signed int to a buffer.
val read_uvint : Bi_inbuf.t -> uintRead an unsigned int from a buffer.
val read_svint : Bi_inbuf.t -> intRead a signed int from a buffer.