ocaml - uint16_t 和 uint8_t 的等价物是什么

标签 ocaml

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/

相关文章:

recursion - 这两个递归 ocaml 函数有什么区别?

c - OCaml 垃圾收集幻像类型

ocaml - 如何在没有可变数据的情况下创建带有循环的图表?

ocaml嵌套模块: the implementation ml does not match the interface cmi

ocaml - 关于 ocamlyacc,函数应用语法和优先级

f# - 与 OCaml 的 'lsr' 和 'asr' 等效的 F# 按位运算符是什么?

用于类型检查类似于 ML 的模式匹配的算法?

types - OCaml 中的多态递归对象类型

emacs - 确定在 emacs 中定义了哪个函数的模块?

ocaml - 为什么 pervasives.cmi 打不开?