I attempted to fill HUFFCODE using:
K = 0;
int CODE = 0;
int SI = HUFFSIZE[0];
while(true) {
HUFFCODE[K] = CODE;
CODE = CODE + 1;
K = K + 1;
if(HUFFSIZE[K] == SI) {
}
else {
if(HUFFSIZE[K] == 0) {
break;
}
else {
while(HUFFSIZE[K] != SI) {
CODE = CODE << 1;
SI = SI + 1;
}
}
}
}
and heres the result:
BITS
------
0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119,
-----------------------
HUFFVAL
-------
, ☺, ☻, ♥, ◄, ♦, ♣, !, 1, ♠, ↕, A, Q, , a, q, ‼, ", 2, ?,, ¶, B, ?, í, ▒, ┴,
, #, 3, R, , §, b, r, Ð,
, ▬, $, 4, ß, %, ±, ↨, ↑, ↓, →, &, ', (, ), *, 5, 6, 7, 8, 9, :, C, D, E, F, G,
H, I, J, S, T, U, V, W, X, Y, Z, c, d, e, f, g, h, i, j, s, t, u, v, w, x, y, z,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ó, ú, ñ, Ñ, ª, º, ¿, ®, ¬
, ▓, │, ┤, Á, Â, À, ©, ╣, ║, ┬, ├, ─, ┼, ã, Ã, ╚, ╔, ╩, Ê, Ë, È, ı, Í, Î, Ï, ┘,
┌, Ô, Ò, õ, Õ, µ, þ, Þ, Ú, Û, ‗, ¾, ¶, §, ÷, ¸, °, ¨, ·, , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , , , , , , , , , , , , , , , , , , , , , , ,
, , , , , ,
-----------------------
HUFFSIZE
----------
2, 2, 3, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,
10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 14, 15, 15, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
, 0, 0, 0, 0, 0, 0, 0, 0,
-----------------------
HUFFCODE
-----------------
0, 1, 4, 10, 11, 24, 25, 26, 27, 56, 57, 58, 59, 120, 121, 122, 246, 247, 248, 2
49, 500, 501, 502, 503, 504, 505, 506, 1014, 1015, 1016, 1017, 1018, 2038, 2039,
2040, 2041, 4084, 4085, 4086, 4087, 16352, 32706, 32707, 65416, 65417, 65418, 6
5419, 65420, 65421, 65422, 65423, 65424, 65425, 65426, 65427, 65428, 65429, 6543
0, 65431, 65432, 65433, 65434, 65435, 65436, 65437, 65438, 65439, 65440, 65441,
65442, 65443, 65444, 65445, 65446, 65447, 65448, 65449, 65450, 65451, 65452, 654
53, 65454, 65455, 65456, 65457, 65458, 65459, 65460, 65461, 65462, 65463, 65464,
65465, 65466, 65467, 65468, 65469, 65470, 65471, 65472, 65473, 65474, 65475, 65
476, 65477, 65478, 65479, 65480, 65481, 65482, 65483, 65484, 65485, 65486, 65487
, 65488, 65489, 65490, 65491, 65492, 65493, 65494, 65495, 65496, 65497, 65498, 6
5499, 65500, 65501, 65502, 65503, 65504, 65505, 65506, 65507, 65508, 65509, 6551
0, 65511, 65512, 65513, 65514, 65515, 65516, 65517, 65518, 65519, 65520, 65521,
65522, 65523, 65524, 65525, 65526, 65527, 65528, 65529, 65530, 65531, 65532, 655
33, 65534, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
------------------------------------
Does that look right?
Edited by staticVoid, 17 September 2007 - 11:10 AM.