/* shia2.c - Don Yang (uguu.org) 02/17/03 */ #include #include int main(int u, char **v) { int s, h, i, a, _[256]; unsigned char t[8192]; double e, n; FILE *m; if( u < 2 ) { printf("%s [...]\n", *v); } else { for(a = 1; a < u; a++) { if( (m = fopen(v[a], "rb")) ) { for(h = i = 0; i < 256; _[i++] = 0); for(; !feof(m); h += s) { if( !(s = fread(t, 1, 8192, m)) ) break; for(i = 0; i < s; _[t[i++]]++); } fclose(m); for(e = i = 0; i < 256; i++) if( _[i] ) { n = _[i] / (double)h; e -= n * log(n) / log(2); } printf("%s: %f bits\n", v[a], e); } } } return 0; }