|
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 11
|
|||||||||||||||||||||||||||||
Вариативная длина числа11.04.2016, 06:42. Показов 1368. Ответов 3
Метки нет (Все метки)
Здравствуйте
Есть такое понятие Variable-length quantity Вот еще информация на гугле Собственно вопрос, как из последовательности байт (массив или поток, не важно) считать мне число вариотивной длины? По пояснением из гугла и википедии понятно что нужно читать первый байт, раскладывать его на биты и смотреть первый бит, если он равен единицы, значит следующий байт в массиве это продолжение числа. И тут уже возникла трудность, по описанию я понял, что первый бит всегда будет отсекаться, так как он в числе не участвует? На гугле указан пример с числом 300:
С этим не понятно только как они из "→ ++ 010 000 0010 1100" получили "→ 100101100" Также я читал что вариативное число это сериализованное число библиотекой protobuf-net и что можно создать класс и десериализовать поток байт в него. Но, я не знаю как это адекватно реализовать, да и метод не совсем подходит. Что бы понять какой именно первый бит в числе (1 или 0) достаточно сделать так:
0
|
|||||||||||||||||||||||||||||
| 11.04.2016, 06:42 | |
|
Ответы с готовыми решениями:
3
Ошибка: Длина входного массива больше числа столбцов в этой таблице Число вводится своим двоичным представлением (длина числа не превышает 10000 двоичных разрядов) |
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
|
|
| 11.04.2016, 07:42 | |
|
Есть же множество библиотек для работы с protobuf, в них есть готовые классы для чтения типов данных, использумых protobuf, вот например метод чтения в одной из них TryReadUInt64VariantWithoutMoving или ReadRawVarint32
1
|
|
|
298 / 260 / 108
Регистрация: 26.10.2012
Сообщений: 810
|
|
| 11.04.2016, 08:30 | |
|
Лучше смотреть на рисунок в википедии, там яснее. Зачем в таблице представлены числа в 16-чной системе счисления, когда используется двоичная -хз.
Смотри, число записывается в двоичной системе 0x00000080 = 8 * 16 = 128 = 10000000 затем оно разбивается в двоичной записи на группы по 7 цифр 10000000 это 00000001 и 0000000. Эти группы кодируются в байт. Число кодируется в несколько таких байтов. В байте 7 битов кодируют 7 0-1 цифр группы, кроме того , так как групп по 7 цифр в числе несколько, нужно еще в одном бите закодировать, последняя ли это группа битов или нет. Если группа последняя то в этот бит ставится 0, иначе 1. То есть к группам 0000001 и 0000000 приписываются биты 1 и 0 (0 приписывается только к самой правой, последней группе, иначе - 1) Получаются биты 10000001 00000000 Т.е каждые 7 знаков числа шифруются 1 байтом по 8 бит
1
|
|
|
0 / 0 / 0
Регистрация: 27.08.2015
Сообщений: 11
|
||||||||||||
| 14.04.2016, 05:58 [ТС] | ||||||||||||
|
Добавлено через 1 минуту jetyb, спасибо, разобрался с принципом Добавлено через 6 часов 25 минут Что бы не быть голословным в заявлении "не правильный порядок действий" В C# Если делать по примеру:
0
|
||||||||||||
| 14.04.2016, 05:58 | |
|
Помогаю со студенческими работами здесь
4
вариативная часть струкуры
Длина числа возведнного в степень Длина окружности, натуральные числа, графики функций Прибавить 1 к целому числу N (длина числа N до 1000 знаков) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|