Как преобразовать Целое число в ByteString в Haskell

Мы хотели бы сериализировать данные в определенном двоичном формате. Мы используем Data.ByteStrings внутренне.

Так, вопрос: Как преобразовать различные типы данных, мы используем для a ByteString. Для String у нас нет проблемы, мы можем использовать encodeLazyByteString UTF8 "string". Но мы также хотели бы преобразовать Integers к ByteStrings (обратный порядок байтов).

Кто-либо знает, как сделать это и/или имеет какие-либо хорошие советы с помощью Haskell и двоичных форматов?

Спасибо!

15
задан Johannes Weiss 17 February 2010 в 18:56
поделиться

2 ответа

Идеальная работа для Data.Binary:

Prelude> :m + Data.Binary
Prelude Data.Binary> encode (pi :: Double)
Chunk "\SOH\SOH\NUL\NUL\NUL\NUL\NUL\NUL\NUL\a\CAN-DT\251!\EM\255\255\255\255\255\255\255\205" Empty

Prelude Data.Binary> encode (42 :: Integer)
Chunk "\NUL\NUL\NUL\NUL*" Empty

для получения ленивых строк байтов, которые, конечно, можно преобразовать в строгие. Пакет cereal предоставляет почти такой же интерфейс, но выдает только строгие строки байтов (поэтому нет бесконечной потоковой передачи кодировок).

18
ответ дан 1 December 2019 в 03:24
поделиться

Взгляните на двоичный пакет или любой из его неленивых вариантов: злак или двоично-строгий .

Во всех трех случаях, поскольку у вас есть конкретный двоичный формат, я бы проигнорировал класс типа Binary , определенный в каждом из них, и вместо этого сосредоточился бы на Put и Получите монад, которые они определяют.

3
ответ дан 1 December 2019 в 03:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: