Насколько большим должен быть мой частотный массив, если я хочу сжать изображение с помощью кода Хаффмана? - PullRequest
0 голосов
/ 03 ноября 2018

Итак, я реализовал код Хаффмана для сжатия текстовых файлов, и вот как я подсчитывал повторения каждого символа

    BufferedInputStream fin = new BufferedInputStream(new FileInputStream(f));
    byte[] b = new byte[(int) f.length()];
    int[] counter = new int[256];
    for(int i = 0; i < b.length; i++) {
        char ch = (char) b[i];
        counter[ch]++;
    }

Я хочу расширить свой код Хаффмана, чтобы сжать и другие типы файлов, но я не совсем уверен, как это сделать? сделать массив, который содержит все возможные символы некодирования, как это

     int[] counter=new int[65536];

Я не думаю, что создание такого большого массива достаточно, но я не совсем уверен, как еще это сделать?

1 Ответ

0 голосов
/ 04 ноября 2018

Обработка символов в виде последовательности байтов, закодированных как UTF-8. Тогда просто сохраняйте частоту байтового кодирования.

...