Проблема кодирования и декодирования Intger - PullRequest
0 голосов
/ 19 мая 2010

У меня длинный список целых чисел, и мне нужно сократить его до одного целого числа. Целочисленный список может быть длиной от 0 до 300 дюймов (около). Мне нужно иметь возможность кодировать / декодировать.

Есть ли лучший вариант, чем справочная таблица?

Ответы [ 2 ]

0 голосов
/ 19 мая 2010

Если вы хотите сэкономить место и ваш список 32-разрядных целых чисел статистически сгруппирован вокруг определенного диапазона значений, вы можете использовать целочисленное сжатие.

.NET использует целочисленное сжатие для метаданных метода в сборках IL. Идея состоит в том, что если целое число обычно мало (например, 1-100), вы можете сэкономить место, кодируя его, используя гораздо меньше 32 бит. В зависимости от вашей схемы вам придется пожертвовать немного или двумя, чтобы сообщить компрессору / декомпрессору, есть ли у вас небольшое или большое значение.

См. здесь для более подробного объяснения того, как .NET делает это.

0 голосов
/ 19 мая 2010

Любой метод сокращения N битов данных до M битов данных, где M меньше N, может работать только для входов, которые в некотором роде являются избыточными.Сокращение на 300: 1 потребовало бы огромного количества избыточности на входе (например, почти все числа были нулями).

...