Кодирование целого числа в 7-разрядном формате C# BinaryReader. ReadString

Одна опция состоит в том, чтобы переместить импорт в отдельный DLL и предоставить классы обертки им использующий непрозрачный указатель. Тогда отключите / MP для того DLL только, и остальная часть Вашей сборки должна быть прекрасной.

12
задан Elazar Leibovich 11 October 2009 в 13:15
поделиться

3 ответа

Что ж, в документации для BinaryReader.Read7BitEncodedInt уже сказано, что он ожидает, что значение будет записано с помощью BinaryWriter.Write7BitEncodedInt и детали документации этого метода формат:

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

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

Итак, целое число 1259551277, в двоичном формате 1001011000100110011101000101101 будет преобразован в этот 7-битный формат следующим образом:

Remaining integer                 encoded bytes
1001011000100110011101000101101
100101100010011001110100          00101101
10010110001001100                 10101101 01110100
1001011000                        10101101 11110100 01001100
100                               10101101 11110100 11001100 01011000
0                                 10101101 11110100 11001100 11011000 00000100

Я не настолько уверен в своих навыках C прямо сейчас, чтобы обеспечить рабочую реализацию. Но, судя по этому описанию, сделать это не так уж сложно.

13
ответ дан 2 December 2019 в 04:43
поделиться

Метод Write7BitEncodedInt содержит описание: 7 младших битов каждого байта кодируют следующие 7 бит числа. Старший бит устанавливается, когда идет следующий байт.

2
ответ дан 2 December 2019 в 04:43
поделиться
3
ответ дан 2 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

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