Ocaml 将字符串拆分为块
由于我在core或电池中看不到这方面的任何东西,所以我正在寻找一种有效的方法,将字节(或字符串,或任何方便的东西)分成约65k的块(我使用一个短的作为长度头,用于通过tcp发送)。 我自己也试过写这个函数,但是我遇到了麻烦,所以任何帮助都会很感激,或者指向现有函数的指针也可以。Ocaml 将字符串拆分为块,ocaml,Ocaml,由于我在core或电池中看不到这方面的任何东西,所以我正在寻找一种有效的方法,将字节(或字符串,或任何方便的东西)分成约65k的块(我使用一个短的作为长度头,用于通过tcp发送)。 我自己也试过写这个函数,但是我遇到了麻烦,所以任何帮助都会很感激,或者指向现有函数的指针也可以。 谢谢 这里有一个函数,可以将字节值拆分为大小为65534的字节列表(当然最后一个除外) (值得考虑的是,在代码中传递整个字节值,同时计算到目前为止已写入的字节数。这将避免生成较小的块所需的复制。)这里有一个函数,可以将字
谢谢 这里有一个函数,可以将字节值拆分为大小为65534的字节列表(当然最后一个除外)
(值得考虑的是,在代码中传递整个字节值,同时计算到目前为止已写入的字节数。这将避免生成较小的块所需的复制。)这里有一个函数,可以将字节值拆分为大小为65534的字节列表(当然最后一个除外)
(值得考虑的是,在代码中传递整个字节值,同时计算到目前为止已写入的字节数。这样可以避免复制较小的块。)我没有考虑过,我可以只使用偏移量,让发送返回消耗的字节数,只要总数不等于长度,就可以递归。谢谢,那确实好多了!谢谢你的功能,看看它是如何工作的仍然很有趣!我没有考虑过,我可以有一个偏移量,让send返回消耗的字节数,只要总数不等于长度,就可以递归。谢谢,那确实好多了!谢谢你的功能,看看它是如何工作的仍然很有趣!
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)