Разделить строку на куски - PullRequest
       4

Разделить строку на куски

0 голосов
/ 16 октября 2018

Так как я не вижу ничего для этого в ядре или батареях, я ищу эффективный способ разбиения байтов (или строки, или чего-либо удобного) на куски размером ~ 65k (я используюкороткий, как мой длина заголовка, это для отправки по TCP).Попробовал написать функцию сам, но у меня возникли проблемы с ней, поэтому любая помощь будет признательна, или указатели на существующую функцию тоже подойдут.Спасибо!

1 Ответ

0 голосов
/ 16 октября 2018

Вот функция для разбиения байтового значения на список байтов размером 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)

(Стоит подумать о передаче целого байтового значения в вашемкод вместе со счетчиком, указывающим, сколько было написано до сих пор. Это позволит избежать копирования, необходимого для создания более мелких кусков.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...