Вот функция для разбиения байтового значения на список байтов размером 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)
(Стоит подумать о передаче целого байтового значения в вашемкод вместе со счетчиком, указывающим, сколько было написано до сих пор. Это позволит избежать копирования, необходимого для создания более мелких кусков.)