Library
Module
Module type
Parameter
Class
Class type
type t = uint40
The specific integer type
val zero : t
The value 0
val one : t
The value 1
val max_int : t
The greatest representable integer
val min_int : t
The smallest representable integer; for unsigned integers this is zero
.
Integer division. Raise Division_by_zero
if the second argument is zero. This division rounds the real quotient of its arguments towards zero, as specified for (/)
.
Integer division. Raise Division_by_zero
if the second argument is zero. This division rounds the real quotient of its arguments towards zero, as specified for (/)
.
Integer remainder. If y
is not zero
, the result of rem x y
satisfies the following property: x = add (mul (div x y) y) (rem x y)
. If y = 0
, rem x y
raises Division_by_zero
.
shift_left x y
shifts x
to the left by y
bits. The result is unspecified if y < 0
or y >= bits
.
shift_right x y
shifts x
to the right by y
bits. If this is a signed integer, this is an arithmetic shift: the sign bit of x
is replicated and inserted in the vacated bits. The result is unspecified if y < 0
or y >= bits
. For an unsigned integer, this is identical to shift_right_logical
.
shift_right_logical x y
shifts x
to the right by y
bits. This is a logical shift: zeroes are inserted in the vacated bits regardless if x
is a signed or unsiged integer. The result is unspecified if y < 0
or y >= bits
.
val of_int : int -> t
Convert the given integer (type int
) to this integer type.
val to_int : t -> int
Convert the given integer (type t
) to an integer of type int
.
val of_float : float -> t
Convert the given floating-point number to an integer of type t
.
val to_float : t -> float
Convert the given integer to a floating-point number.
val of_nativeint : nativeint -> t
Convert the given integer (type t
) to a native integer.
val to_nativeint : t -> nativeint
Convert the given native integer (type nativeint
) to an integer (type t
.
val of_substring : string -> pos:int -> t * int
Convert the given substring starting at the given offset pos
to an integer of type t
and return the offset. The string is read in decimal (by default) or in hexadecimal, octal or binary if the string begins with 0x
, 0o
or 0b
respectively. Raise Failure "*_of_substring"
if the given string is not a valid representation of an integer, or if the integer represented exceeds the range of integers representable in type t
.
val of_string : string -> t
Convert the given string to an integer of type t
. The string is read in decimal (by default) or in hexadecimal, octal or binary if the string begins with 0x
, 0o
or 0b
respectively. Raise Failure "*_of_string"
if the given string is not a valid representation of an integer, or if the integer represented exceeds the range of integers representable in type t
.
val to_string : t -> string
Return the string representation of its argument, in decimal.
val to_string_bin : t -> string
Return the string representation of its argument, in binary (beginning with 0b
)
val to_string_oct : t -> string
Return the string representation of its argument, in octal (beginning with 0o
)
val to_string_hex : t -> string
Return the string representation of its argument, in hex (beginning with 0x
)
val printer : Stdlib.Format.formatter -> t -> unit
val printer_bin : Stdlib.Format.formatter -> t -> unit
val printer_oct : Stdlib.Format.formatter -> t -> unit
val printer_hex : Stdlib.Format.formatter -> t -> unit
val of_bytes_big_endian : Stdlib.Bytes.t -> int -> t
of_bytes_big_endian buffer offset
creates an integer value of type t
from the buffer buffer
starting at offset offset
. The byte order is interpreted to be big endian. If the buffer does not hold enough bytes for this integer, i.e. if (Bytes.length buffer) < (offset + (bits / 8))
, the function will raise Invalid_argument "index out of bounds"
.
val of_bytes_little_endian : Stdlib.Bytes.t -> int -> t
of_bytes_big_endian buffer offset
creates an integer value of type t
from the buffer buffer
starting at offset offset
. The byte order is interpreted to be little endian. If the buffer does not hold enough bytes for this integer, i.e. if (Bytes.length buffer) < (offset + (bits / 8))
, the function will raise Invalid_argument "index out of bounds"
.
val to_bytes_big_endian : t -> Stdlib.Bytes.t -> int -> unit
to_bytes_big_endian i buffer offset
writes the integer i
to the buffer buffer
starting at offset offset
. The byte order used is big endian. If the buffer does not hold enough bytes, i.e. if (Bytes.length buffer) < (offset + (bits / 8))
, the function will raise Invalid_argument "index out of bounds"
.
val to_bytes_little_endian : t -> Stdlib.Bytes.t -> int -> unit
to_bytes_little_endian i buffer offset
writes the integer i
to the buffer buffer
starting at offset offset
. The byte order used is little endian. If the buffer does not hold enough bytes, i.e. if (Bytes.length buffer) < (offset + (bits / 8))
, the function will raise Invalid_argument "index out of bounds"
.