Бинарное хранение чисел с битами переполнения ... как называется формат? - PullRequest
0 голосов
/ 03 февраля 2011

Для формата сериализации / протокола я должен кодировать числа без знака до 64-разрядного целого числа без знака в компактном виде, который должен быть прост в реализации (то есть я не ищу специальный алгоритм сжатия).Я думал о следующем:

if n<128  
    take bits 0..6 for representing n, set overflow bit 7 to 0
    store one byte
if n>=128 and n<16384
    take bits 0..6 of byte 1 as bits 0..6 of n, set overflow bit 7 of byte 1 to 1
    take bits 0..6 of byte 2 as bits 7..13 of n, set overflow bit 7 of byte 2 to 0
    store byte 1 followed by byte 2
 if n>=16384 and n<2^21
    ...set overflow bit 7 of byte 2 to 1... (and so on)

У меня есть два вопроса по этому поводу:

  1. Как называется этот формат?Где я могу найти реализации?

  2. Это для двоичного протокола, который будет отправляться через сокеты, где небольшие числа <128 будут отправляться очень часто.Как вы думаете, дополнительная обработка того стоит? </p>

Ответы [ 2 ]

0 голосов
/ 03 февраля 2011

Хорошо, после еще одного исследования я наконец нашел это. Он называется «величина переменной длины» и используется в MIDI и ASN.1 (см. Запись в Википедии )

Чтобы ответить на другой мой вопрос, я склонен полагать, что это не стоит затрат на обработку, но я все еще размышляю об этом.

0 голосов
/ 03 февраля 2011

Не так, как, но похоже на UTF-8.

Редактировать

Кстати: попробуйте выбрать известный протокол.UTF-8, кодировка Хаффмана ...

...