В примере речь идет о структурированных данных с полем известного размера в начале.В вашем случае вы хотите выполнить поиск, поэтому это довольно другая проблема.
Проблема в том, что elm/bytes
на самом деле не предназначена для поиска.Если вы можете гарантировать, что искомая часть будет выровнена по байтам, вполне возможно, что это можно сделать, но, учитывая то, что вы сказали, не существует простого способа, поскольку вы не можете выполнять итерации по частям.бит.
Вы должны прочитать значения без выравнивания, а затем вручную найти часть числа, которое вы хотите в этом.Учитывая сложность и неэффективность этого подхода, я бы рекомендовал использовать порты вместо этого варианта использования.
Если вы можете гарантировать, что то, что вы ищете, будет выровнено по байту (или еще лучше, выровнено по длиневашего номера), вы можете декодировать байт за раз, пока не найдете то, что ищете.Невозможно прочитать с заданного смещения, если вы хотите прочитать до определенной точки, вам нужно прочитать и выбросить значения.
Чтобы сделать это, вам нужно настроить циклгде ваше состояние содержит информацию о том, какую ценность вы ищете, вы нашли.На каждом этапе вы проверяете, есть ли у вас все это (успех), у вас есть следующая часть (продолжение), или у вас что-то другое (сбросьте состояние для поиска с самого начала снова).Если вы достигли конца, не найдя его, вы потерпели неудачу.