Описание тега scodec

NoneScodec - это чистая функциональная библиотека Scala, которая позволяет кодировать / декодировать двоичные данные.
1 ответ

Комбинаторы Scodec: Заголовок содержит магическое число, которое используется для различения типов

Я ищу способ приблизиться к протоколу, как в следующем примере: case class Request(bodyType: Int, foo: Int, bar: Int, body: RequestBody) sealed trait RequestBody case class Read(key: String) extends RequestBody case class Write(key: String, value: A…
10 янв '16 в 03:31
1 ответ

Scodec: Как создать кодек для необязательного байта

Я должен создать кодек для сообщения, которое имеет следующую спецификацию. Длина сообщения указывается байтом, младший значащий бит которого является флагом расширения, который при установке указывает, что следующий (необязательный) байт должен исп…
14 май '15 в 22:19
2 ответа

Кодек для вектора [N], где N определяет конец вектора

Я использую Scodec для декодирования метаданных Flac. Одна из спецификаций состоит в том, что есть Заголовок и Блок, которые могут повторяться несколько раз вместе. Заголовок имеет флаг, который указывает, является ли текущая комбинация заголовка / …
10 авг '17 в 04:05
1 ответ

Преобразование scodec variableSizePrefixBytes

У меня есть случай использования, когда заголовок может содержать 7 байтов плюс необязательный 0-15 байт информации, где информация о размере находится в младших 4 битах 5-го байта, поэтому формат: 4 bytes | 4 bits | 4 bits <- length of extra byt…
05 янв '16 в 16:10
0 ответов

Выравнивание байта BitVector после декодирования смещенного значения

Я столкнулся с интересной проблемой со Scodec. У меня есть своеобразная схема кодирования, которая требует выравнивания байтов потока, когда текущий указатель бита mod 8 не равен нулю (не выровнен по ближайшему байту). Теперь, как правило, это будет…
04 мар '16 в 07:17
1 ответ

Бесформенный: инверсия фильтра не в HList

Я пытаюсь написать комбинатор для библиотеки Scodec, которая преобразует Codec[K] в к Codec[L] где K является HList а также L является эквивалентом HList со всем Unit элементы удалены. Реализация декодирования может быть выполнена путем декодировани…
30 авг '14 в 03:35
1 ответ

Отсутствует scodec.Codec[Command] неявно из-за класса с не значащими полями

Я пытаюсь использовать дискриминаторы в существующем проекте, и что-то не так с моими классами, я думаю. Рассмотрим этот пример scodec. Если я изменю TurnLeft и его кодек для sealed class TurnLeft(degrees: Int) extends Command { def getDegrees: Int …
02 фев '17 в 08:36
1 ответ

.dropUnit на кодеках.hlist не работает

Для "больших" кодеков фазовый тип Scala занимает вечность (мы говорим минуты) при создании кодека непосредственно из HListи применение .dropUnits ( ignore(6) :: uint(2) :: uint(30) :: int(4) :: int(8) :: uint(10) :: bool(1) :: int(28) :: int(27) :: …
23 янв '15 в 11:51
2 ответа

Записи различаются иерархически

Я должен реализовать какой-то собственный двоичный формат и хотел сделать это с помощью scodec. Тем не менее, я не могу найти краткое решение. Формат выглядит следующим образом: файл состоит из нескольких записей, где каждая запись имеет префикс 16-…
02 ноя '16 в 18:55
2 ответа

Scodec: использование vectorOfN с полем vlong

Я играю с блокчейном Биткойн, чтобы изучить Scala и некоторые полезные библиотеки. В настоящее время я пытаюсь декодировать и кодировать блоки с помощью SCodec, и моя проблема в том, что функция vectorOfN принимает свой размер как Int. Как я могу ис…
10 дек '17 в 11:22
1 ответ

scodec игнорирует последнее значение в преобразовании кодека между hlist и case-классом

Я только начинаю с библиотекой "scodec" на уровне: https://github.com/scodec/scodec Я обнаружил, что я часто использую следующую функцию: /** * When called on a `Codec[L]` for some `L <: HList`, returns a new codec that encodes/decodes * `B :: L`…
13 ноя '14 в 20:17
1 ответ

Как мне сделать кодек [Option[T]], управляемый префиксом?

Я пытаюсь реализовать кодек для формата PSQL COPY BINARY. Подробности в разделе Tuple Поля Int, Bool, String кодируются как <4 byte length><var length payload> Я реализовал их так val psqlUtf8: Codec[String] = variableSizeBytes(int32, ut…
09 июн '18 в 21:59
1 ответ

Использование вложенных классов case с scodec

При определении моих сообщений с помощью scodec я хотел бы использовать вложенные классы case. Например: case class Foo(x: Int, y: Int) object Foo { def baseCodec = uint16 :: uint16 def codec = baseCodec.as[Foo] } case class Bar(a: Int, foo: Foo, b:…
12 апр '15 в 03:31
1 ответ

Свести произвольно вложенный кодек?

Как новый пользователь SCodec, есть довольно кривая обучения. Я наткнулся на загадку, которую не могу решить, несмотря на то, что прочитал источник и документы. Я хочу иметь возможность определять популярные кодеки как функции, подобные этой def pac…
11 янв '16 в 01:07
1 ответ

scodec декодирует / кодирует разделенное поле длины

Я использую scodec: https://github.com/scodec/scodec для декодирования / кодирования двоичного протокола. Я борюсь с частью спецификации, где поле "length" разделено на две части "moreflag". Флаг more указывает, нужно ли полю длины больше места. Exa…
13 ноя '14 в 23:18
1 ответ

Не могу найти scodec-акку, опубликованную в Maven Central

Мне нужно преобразовать ByteString, полученный AKKA Streams, в BitVector int, чтобы декодировать его с помощью scodec. Говорят, что библиотека будет опубликована в Maven central под org.scodec %% scodec-akka, как упоминалось здесь GitHub scodec-akka…
28 апр '16 в 03:40
1 ответ

Как игнорировать кодек после его использования для ограничения размера байтов

Я хотел бы создать модель для протоколов KMIP, которая работает с кодированием TTLV ( тег, тип, длина, значение) ttlv Функция имеет высокий уровень и принимает тэг, тип и кодек значения. def ttlv[A<:HList](tag:ByteVector, itype:ByteVector, value:…
08 окт '18 в 08:48
1 ответ

Scodec: Coproducts не смог найти неявное значение для параметра auto: scodec.codecs.CoproductBuilderAuto

Я пытаюсь определить кодек-код Scodec для связи с EELink GPS. Вот код: import scodec.Codec import scodec.bits.ByteVector import scodec.codecs._ trait Message object Message { implicit val discriminated: Discriminated[ Message, Int ] = Discriminated(…
14 июн '15 в 23:08
0 ответов

Как определить значение дискриминатора для кодеков, которые производятся совместно?

Не могли бы вы объяснить, как на самом деле работают побочные продукты? Вот мой код sealed trait ArdbData case class ArdbDataString(value: String) extends ArdbData case class ArdbDataLong(value: Long) extends ArdbData case class ArdbDataDouble(value…
11 июн '17 в 08:59
1 ответ

Эффективно упаковать список длинных в представлении Scodec

У меня есть класс дел с атрибутом List[Long], который я конвертирую в токен с помощью библиотеки Scodec. Прямо сейчас, это не эффективно (с точки зрения пространства), потому что я использую этот кодек: listOfN (uint16, int64) При этом используются …
13 авг '16 в 15:01