分割字符串

时间:2018-10-16 18:18:07

标签: ocaml

由于我在内核或电池中看不到任何东西,因此我正在寻找一种将字节(或字符串,或任何方便的东西)分成大约65k的块的有效方法(我正在使用简称为我的长度标头,用于通过tcp发送)。 尝试自己编写函数,但遇到麻烦,因此不胜感激,或者指向现有函数的指针也很好。 谢谢!

1 个答案:

答案 0 :(得分:2)

这是一个将字节值拆分为大小为65534的字节列表的函数(当然,最后一个除外)。

let split_bytes b =
    let rec isplit sofar ib =
        let iblen = Bytes.length ib in
        if iblen > 65534 then
            let chunk = Bytes.sub ib 0 65534 in
            let rest = Bytes.sub ib 65534 (iblen - 65534) in
            isplit (chunk :: sofar) rest
        else
            ib :: sofar
    in
    List.rev (isplit [] b)

(值得考虑的是在代码中传递整个字节值以及一个计数,该计数表明到目前为止已写入了多少字节。这样可以避免复制来制作较小的块。)