--- /dev/null
+<?php
+error_reporting(E_ALL | E_STRICT);
+
+define('__STEP_32' , 3);
+define('__LEFT_32' , 0xffff0000);
+define('__RIGHT_32' , 0x0000ffff);
+define('__FACTOR_32', 16);
+define('__FORMAT_WRITE_32', 'II');
+
+define('__STEP_64' , 7);
+define('__LEFT_64' , 0xffffffff00000000);
+define('__RIGHT_64' , 0x00000000ffffffff);
+define('__FACTOR_64', 32);
+define('__FORMAT_WRITE_64', 'NN');
+
+// Default is 32-bit
+$__factor = constant('__FACTOR_32');
+$__left = constant('__LEFT_32');
+$__right = constant('__RIGHT_32');
+$__format = constant('__FORMAT_WRITE_32');
+$__step = constant('__STEP_32');
+
+if ((isset($_SERVER['argv'][1])) && ($_SERVER['argv'][1] == '-64')) {
+ // Use 64-bit
+ $__factor = constant('__FACTOR_64');
+ $__left = constant('__LEFT_64');
+ $__right = constant('__RIGHT_64');
+ $__format = constant('__FORMAT_WRITE_64');
+ $__step = constant('__STEP_64');
+} // END - if
+
+$str = gzcompress(file_get_contents('test.data'), 9);
+
+$encoded = '';
+
+for ($idx = 0; $idx < strlen($str); $idx += $__step) {
+ $big = 0;
+ for ($i = 0; $i < $__step; $i++) {
+ $factor = ($__step - 1 - $i);
+
+ if (($idx + $i) <= strlen($str)) {
+ $ord = ord(substr($str, ($idx + $i), 1));
+
+ $add = $ord * pow(256, $factor);
+
+ $big += $add;
+
+ //print 'idx=' . $idx . ',i=' . $i . ',ord=' . $ord . ',factor=' . $factor . ',add=' . $add . ',big=' . $big . PHP_EOL;
+ } // END - if
+ } // END - for
+
+ $l = ($big & $__left) >>$__factor;
+ $r = $big & $__right;
+
+ $unpacked = str_pad(pack($__format, $l, $r), 8, '0', STR_PAD_LEFT);
+ //print 'big=' . $big . ',unpacked('.strlen($unpacked) . ')='.md5($unpacked).PHP_EOL;
+
+ $encoded .= $unpacked;
+} // END - for
+
+print 'Hash(' . strlen($encoded) . ')=' . md5($encoded) . PHP_EOL;
+print 'Encoded ' . strlen($str) . ' bytes into ' . strlen($encoded) . ' bytes ...' . PHP_EOL;
+
+file_put_contents('test.data.bin' . ($__factor * 2), $encoded);
+
+print 'File size is: ' . filesize('test.data.bin' . ($__factor * 2)) . ' bytes.' . PHP_EOL;
+
+// [EOF]
+?>