#c #compression #txt
#c #сжатие #txt
Вопрос:
Итак, я хочу сохранить символы ascii в текстовый файл или что-то подобное, это просто метод сжатия, который я хочу использовать для экономии места, чтобы для каждого символа не было разделителей, но дело в том, что он превращается во что-то другое с другой кодировкой в ascii
[Вот как это выглядит с пробелами. Это то, что я хочу, чтобы произошло, за исключением пробелов][1]
[И вот как это выглядит без пробелов][2]
это функция, которая пытается его распаковать
int i, j=0, k=0, ch, finaldec=0;
char temp[8], finalcode[1000], tempc;
for (i=count; i>=0; i--){
j ;
temp[j]=huffmanCode[i];
if (temp[j]=='1'){
finaldec =pow(2, j);
}
if (j==7){
finalcode[k]=finaldec;
printf("%c ", finalcode[k]);
finaldec=0;
k ;
j=0;
}
}
FILE *ff;
ff = fopen("text_compress.txt", "w ");
for (i=0; i<k; i )
fprintf(ff, "%c ", finalcode[i]);
fclose(ff);
}
Что делает эта функция, так это то, что она просто принимает последовательность из 1 и 0, затем в каждом байте она преобразует его в символ ascii
Что я должен сделать, чтобы правильно сохранить ASCII-код? используйте другое расширение файла или есть какой-то невидимый разделитель, например »? [1]: https://i.stack.imgur.com/w3gKI.png [2]: https://i.stack.imgur.com/n8W3e.png
Ответ №1:
Похоже, содержимое finalcode
недопустимых символов ASCII. Блокнот, вероятно, интерпретирует некоторые из этих байтов как символы в кодировке UTF, и, есть ли у вас пробелы или нет, скорее всего, просто меняет эту интерпретацию.
Если вы ожидаете, что на выходе будет какой-то допустимый текст ASCII, то, похоже, вероятно, есть какая-то проблема с вашей функцией сжатия или распаковки (хотя трудно знать наверняка, не видя, как HuffmanCode
заполняется).
Комментарии:
1. Если я сделаю это i.stack.imgur.com/w3gKI.png и отрегулируйте соответственно, сжатие и распаковка работают нормально, но размер сжатого файла будет больше, чем размер распакованного, поэтому мне как-то нужно удалить пробелы между ними, и у меня нет никакой другой идеи, кроме преобразования байта в десятичное число в ascii