Сжатие UTF-8 (или другой 8-битной кодировки) до 7 или менее бит.Python

Программы на Python
Ответить
Anonymous
 Сжатие UTF-8 (или другой 8-битной кодировки) до 7 или менее бит.

Сообщение Anonymous »

Я хочу взять файл, закодированный в UTF-8, который не использует более 128 различных символов, а затем переместить его в 7-битную кодировку, чтобы сэкономить 1/8 места. Например, если у меня есть текстовый файл размером 16 МБ, в котором используются только первые 128 символов (ascii), я бы хотел сбрить лишний бит, чтобы уменьшить размер файла до 14 МБ.

Как мне это сделать?

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

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

Итак, если бы файл выглядел так (я буду использовать десятичный пример, потому что я стараюсь не думать в шестнадцатеричном формате)

127 254 025 212 015 015 132...
Это будет

001 002 003 004 005 005 006

Если 127 сопоставить с 001, 254 сопоставить с 005, и т. д.

Однако я не совсем уверен в нескольких вещах.
  • Было ли этого достаточно, чтобы действительно сократить размер файла? У меня плохое предчувствие, что в двоичной строке просто останется лишний 0 — 11011001 может быть сопоставлен с 01000001, а не с 1000001, и я на самом деле не сэкономлю место.
    Если это произойдет, как мне избавиться от нуля?
  • Как мне открыть файл для чтения/записи в двоичном/десятичном/шестнадцатеричном формате, а не просто в виде текста?
    Я в основном работал с Python, но при необходимости могу разобраться и с C.
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/183 ... fewer-bits
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»