由于我在内核或电池中看不到任何东西,因此我正在寻找一种将字节(或字符串,或任何方便的东西)分成大约65k的块的有效方法(我正在使用简称为我的长度标头,用于通过tcp发送)。 尝试自己编写函数,但遇到麻烦,因此不胜感激,或者指向现有函数的指针也很好。 谢谢!
答案 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)
(值得考虑的是在代码中传递整个字节值以及一个计数,该计数表明到目前为止已写入了多少字节。这样可以避免复制来制作较小的块。)