Хмм, байты и строка - это два разных типа в OCaml. Я предполагаю, что вы говорите о строке, а не о значении байтов типа.
Если вы уверены, что ваш ввод имеет правильную форму, вы можете просто добавить '0' к каждому элементу, а затем использовать int_of_string
.
let convert s =
let s' =
String.map
(fun c -> Char.chr (Char.code c + Char.code '0'))
s
in
int_of_string s'
Вот как это работает:
# let convert = ...
val convert : string -> int = <fun>
# convert "\000\001\002\003";;
- : int = 123
Для серьезного использования вы хотели бы убедиться, что входные байты находятся в правильном диапазоне. Вы можете вернуть значение типа int option
(где None
указывает, что ввод был неверным). Или вы можете вызвать исключение для неверного ввода.