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 位)
整数类型就是这样!
这是一个显示所有这些类型值的 session :
$ ocaml
OCaml version 4.02.1
# 3;;
- : int = 3
# 'z';;
- : char = 'z'
# 3l;;
- : int32 = 3l
# 3L;;
- : int64 = 3L
# 3n;;
- : nativeint = 3n
#
使用较窄整数值的一个原因是当您有很多整数值时可以节省空间。对于这种情况,有 Bigarray模块,支持 8 位和 16 位的有符号和无符号值数组,以及上面列出的整数类型。
关于ocaml - uint16_t 和 uint8_t 的等价物是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32674170/