首页 > 解决方案 > 将字节字符串转换为十进制

问题描述

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

谢谢大家!

标签: bytedecimalocaml

解决方案


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


推荐阅读