OCaml 中的 output_binary_int 是做什么的?

What does output_binary_int in OCaml do?

output_binary_int stdout 1101

打印 M 到标准输出。

文档说 "Write one integer in binary format (4 bytes, big-endian)",但我真的不明白如何使用此功能。

如果您在终端中查看标准输出,您期望标准输出由一系列字符组成。

output_binary_int 的输出不是字符,而是原始的 32 位整数值。由于一个字节是 8 位,这意味着它将输出 4 个字节。但是当被视为字符时,它们通常不会是有意义的字节。

如果将输出发送到文件,然后查看文件的内容,会更有意义。像这样:

$ rlwrap ocaml
        OCaml version 4.10.0

# let ochan = open_out "mybfile";;
val ochan : out_channel = <abstr>
# output_binary_int ochan 1101;;
- : unit = ()
# close_out ochan;;
- : unit = ()
# ^D
$ od -tx1 mybfile
0000000    00  00  04  4d
0000004

如您所见,向文件写入了 4 个字节的二进制数据。这 4 个字节代表大端格式的值 1101。

如果您不熟悉二进制整数表示法(请原谅我),这意味着文件中的值表示十六进制值 0x0000044d,实际上是 1011。

如果您的终端的字符编码是 UTF-8(这很常见),则输出表示两个空字符,后跟 Control-D 字符(这两个都没有视觉表示),然后是字符代码为 0x4d,确实是 M.