uint16_t 和 uint8_t 的等价物是什么
What is the equivalent of uint16_t and uint8_t
OCaml 中 C++ 中 uint16_t 和 uint8_t 的等价物是什么?
我遇到了 Int64 但我不确定它是否已签名。另外我不确定 OCaml 中 C++ 的 uint8_t 等价于什么?
C++的类型是为了匹配常见硬件的各种整数大小。
OCaml 的类型处于更高的水平(或者至少我是这样看的)。所以你不会找到完整范围的 C++ 整数类型。
basic OCaml language definition只提到了这些整数类型:
int
:一个 31 位有符号值(在 64 位机器上更长;目前 64 位实现定义了 63 位有符号值)
char
:一个8位无符号值
OCaml language extensions document定义了更多的整数类型:
int32
: 32 位有符号值
int64
: 64 位有符号值
nativeint
:本机字大小的有符号值(32 位机器上为 32 位;64 位机器上为 64 位)
整数类型就这些了!
这是一个显示所有这些类型的值的会话:
$ ocaml
OCaml version 4.02.1
# 3;;
- : int = 3
# 'z';;
- : char = 'z'
# 3l;;
- : int32 = 3l
# 3L;;
- : int64 = 3L
# 3n;;
- : nativeint = 3n
#
使用更窄的整数值的一个原因是当您有很多整数值时可以节省 space。对于这种情况,有 Bigarray 模块,它支持 8 位和 16 位的有符号和无符号值数组,以及上面列出的整数类型。
uint 库实现了不同的无符号整数类型。如果您需要 C
的行为
uint8_t
只需使用
Uint8.t
来自这个图书馆。
OCaml 中 C++ 中 uint16_t 和 uint8_t 的等价物是什么? 我遇到了 Int64 但我不确定它是否已签名。另外我不确定 OCaml 中 C++ 的 uint8_t 等价于什么?
C++的类型是为了匹配常见硬件的各种整数大小。
OCaml 的类型处于更高的水平(或者至少我是这样看的)。所以你不会找到完整范围的 C++ 整数类型。
basic OCaml language definition只提到了这些整数类型:
int
:一个 31 位有符号值(在 64 位机器上更长;目前 64 位实现定义了 63 位有符号值)char
:一个8位无符号值
OCaml language extensions document定义了更多的整数类型:
int32
: 32 位有符号值int64
: 64 位有符号值nativeint
:本机字大小的有符号值(32 位机器上为 32 位;64 位机器上为 64 位)
整数类型就这些了!
这是一个显示所有这些类型的值的会话:
$ ocaml
OCaml version 4.02.1
# 3;;
- : int = 3
# 'z';;
- : char = 'z'
# 3l;;
- : int32 = 3l
# 3L;;
- : int64 = 3L
# 3n;;
- : nativeint = 3n
#
使用更窄的整数值的一个原因是当您有很多整数值时可以节省 space。对于这种情况,有 Bigarray 模块,它支持 8 位和 16 位的有符号和无符号值数组,以及上面列出的整数类型。
uint 库实现了不同的无符号整数类型。如果您需要 C
的行为uint8_t
只需使用
Uint8.t
来自这个图书馆。