Я реализовал LZW-компрессор, который кодирует строки в целые числа с помощью хэш-функции. Я сохранил закодированную строку в текстовом файле. Теперь мне нужно распаковать тот же код. Я запутался, как различать двузначное целое и однозначное целое при чтении из текстового файла.
Например, мой словарь:
0 c
1 bba
3 aa
5 ac
7 bb
8 aab
9 a
10 b
и так далее.
Теперь предположим, что я закодировал строку «aaabbbac» в «9 3 10 7 9 0», которая сохраняется в текстовом файле как 9310790. Как различить 0, 1 и 10 при чтении из файла?
Некоторые варианты:
Храните их в двоичном формате, а не в текстовом формате. Это может быть небольшой проблемой для чтения и записи, но это может быть полезным для изучения. Проблема в том, что если вы хотите визуализировать числа с помощью текстового редактора, но вы можете найти какой-то инструмент для визуализации двоичных файлов. Предполагая 2 байта на целое число (тип short), ваш пример будет в гекса (не считая endian): 00 09 00 03 00 0a 00 07 00 09 00 00
Храните их с фиксированной длиной на номер. Пример: printf («% 03d», число) всегда будет создавать числа из 3 цифр. Ваш пример будет: 009003010007009000
Используйте запятую или точку с запятой: 9,3,10,7,9,0