Минимизировать размер файла для десятичного файла .csv - PullRequest
0 голосов
/ 04 февраля 2019

Мне нужно разместить как можно больше информации в файл небольшого размера.В этом случае данные представлены в формате, разделенном запятыми, и все значения хранятся в виде 2dp десятичных знаков (без заголовков).

Я посмотрел, и я понимаю, что все необходимые мне символы хранятся с использованиемASCII (1 байт на символ) в моем стандартном файле .txt, который я сейчас использую.Очевидно ASCII имеет 256 возможных значений, что намного больше, чем мне нужно - я мог бы обойтись только с 16 символами.

Могу ли я сохранить свои данные в каком-то 4-битном текстовом файле?Я буду создавать файл с помощью c # (все поиски в Google приводят к советам по созданию текстового файла, а не к тому, как сделать текст меньшего размера «шрифтом»).Сохранит ли это в конечном итоге хоть какое-то пространство?Я мог бы сжать все что угодно, прежде чем отправить его, но любой совет по поводу идей по уменьшению размера файла был бы очень признателен.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Я думаю, что вопрос правомерен, но ответ таков: вы навязываете логические условия, которые не оставляют места для какого-либо решения.

Так что, если вы можете избежать структуры CSV для своей пользовательской структуры, вы можете что-то сохранить,но вам это нужно, и это в значительной степени определяет ваше решение.Единственная оставшаяся переменная - это то, как вы кодируете текст, но вы не можете кодировать текст менее чем в 8 битах, вы можете просто использовать более высокие значения, такие как Unicode (16 бит).

Я не буду комментироватьпри использовании сжатия, как вы уже упоминали, что вы ищете альтернативные ответы, и вы знаете об этом.

0 голосов
/ 05 февраля 2019

[файл] будет прочитан фрагментом кода c #

Таким образом, вы управляете форматом сериализации.Вы можете выбрать любой формат, который вам нравится.

Быстрый способ сэкономить место и повторно использовать существующий код - сжать CSV.Gzip встроен, но он довольно слабый.Вы можете использовать библиотеку 7-Zip.Алгоритм 7-Zip является современным.Если избавится от избыточности, вызванной десятичными точками и в основном используя символы 0-9.Это не удалит 100% этого, но 99% (?).

Вы можете сделать это еще более эффективным, используя лучший формат.Вы можете использовать BinaryReader/Writer, чтобы легко написать что-то совершенно нестандартное.

Протоколные буферы немного проще и также чрезвычайно компактны.

...