Если вы смотрите на стандартный вывод в терминале, вы ожидаете, что стандартный вывод будет состоять из последовательности символов.
Вывод 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.