将字节字符串转换为十进制

时间:2019-05-10 23:46:28

标签: byte decimal ocaml

我正在寻找最简单的解决方案,以将字节字符串(格式为“ \ 000 \ 001 \ 002 \ 003”)转换为OCaml中的小数。

谢谢!

1 个答案:

答案 0 :(得分:0)

嗯,字节和字符串是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表示输入无效)。或者,您可以为无效输入引发异常。