mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Fabio Pistolesi
07.45.2015 b638155f88ca76f9f8437bc7070baade6628353a
Change byte to hex conversions to return computed at initialization strings instead of hardcoded values
2 files modified
1847 ■■■■■ changed files
opendj-core/src/main/java/com/forgerock/opendj/util/StaticUtils.java 1046 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/util/StaticUtils.java 801 ●●●●● patch | view | raw | blame | history
opendj-core/src/main/java/com/forgerock/opendj/util/StaticUtils.java
@@ -91,6 +91,18 @@
    /** UTC TimeZone is assumed to never change over JVM lifetime. */
    private static final TimeZone TIME_ZONE_UTC_OBJ = TimeZone.getTimeZone(TIME_ZONE_UTC);
    private static final String[][] BYTE_HEX_STRINGS = new String[2][256];
    private static final int UPPER_CASE = 0;
    private static final int LOWER_CASE = 1;
    static {
        String[] hexDigits = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"};
        for (int i = 0; i < 256; i++) {
            BYTE_HEX_STRINGS[UPPER_CASE][i] = hexDigits[i >>> 4] + hexDigits[i & 0xF];
            BYTE_HEX_STRINGS[LOWER_CASE][i] = BYTE_HEX_STRINGS[UPPER_CASE][i].toLowerCase();
        }
    }
    /**
     * The default scheduler which should be used when the application does not
     * provide one.
@@ -125,522 +137,7 @@
     * @return The string representation of the provided byte in hexadecimal.
     */
    public static String byteToHex(final byte b) {
        switch (b & 0xFF) {
        case 0x00:
            return "00";
        case 0x01:
            return "01";
        case 0x02:
            return "02";
        case 0x03:
            return "03";
        case 0x04:
            return "04";
        case 0x05:
            return "05";
        case 0x06:
            return "06";
        case 0x07:
            return "07";
        case 0x08:
            return "08";
        case 0x09:
            return "09";
        case 0x0A:
            return "0A";
        case 0x0B:
            return "0B";
        case 0x0C:
            return "0C";
        case 0x0D:
            return "0D";
        case 0x0E:
            return "0E";
        case 0x0F:
            return "0F";
        case 0x10:
            return "10";
        case 0x11:
            return "11";
        case 0x12:
            return "12";
        case 0x13:
            return "13";
        case 0x14:
            return "14";
        case 0x15:
            return "15";
        case 0x16:
            return "16";
        case 0x17:
            return "17";
        case 0x18:
            return "18";
        case 0x19:
            return "19";
        case 0x1A:
            return "1A";
        case 0x1B:
            return "1B";
        case 0x1C:
            return "1C";
        case 0x1D:
            return "1D";
        case 0x1E:
            return "1E";
        case 0x1F:
            return "1F";
        case 0x20:
            return "20";
        case 0x21:
            return "21";
        case 0x22:
            return "22";
        case 0x23:
            return "23";
        case 0x24:
            return "24";
        case 0x25:
            return "25";
        case 0x26:
            return "26";
        case 0x27:
            return "27";
        case 0x28:
            return "28";
        case 0x29:
            return "29";
        case 0x2A:
            return "2A";
        case 0x2B:
            return "2B";
        case 0x2C:
            return "2C";
        case 0x2D:
            return "2D";
        case 0x2E:
            return "2E";
        case 0x2F:
            return "2F";
        case 0x30:
            return "30";
        case 0x31:
            return "31";
        case 0x32:
            return "32";
        case 0x33:
            return "33";
        case 0x34:
            return "34";
        case 0x35:
            return "35";
        case 0x36:
            return "36";
        case 0x37:
            return "37";
        case 0x38:
            return "38";
        case 0x39:
            return "39";
        case 0x3A:
            return "3A";
        case 0x3B:
            return "3B";
        case 0x3C:
            return "3C";
        case 0x3D:
            return "3D";
        case 0x3E:
            return "3E";
        case 0x3F:
            return "3F";
        case 0x40:
            return "40";
        case 0x41:
            return "41";
        case 0x42:
            return "42";
        case 0x43:
            return "43";
        case 0x44:
            return "44";
        case 0x45:
            return "45";
        case 0x46:
            return "46";
        case 0x47:
            return "47";
        case 0x48:
            return "48";
        case 0x49:
            return "49";
        case 0x4A:
            return "4A";
        case 0x4B:
            return "4B";
        case 0x4C:
            return "4C";
        case 0x4D:
            return "4D";
        case 0x4E:
            return "4E";
        case 0x4F:
            return "4F";
        case 0x50:
            return "50";
        case 0x51:
            return "51";
        case 0x52:
            return "52";
        case 0x53:
            return "53";
        case 0x54:
            return "54";
        case 0x55:
            return "55";
        case 0x56:
            return "56";
        case 0x57:
            return "57";
        case 0x58:
            return "58";
        case 0x59:
            return "59";
        case 0x5A:
            return "5A";
        case 0x5B:
            return "5B";
        case 0x5C:
            return "5C";
        case 0x5D:
            return "5D";
        case 0x5E:
            return "5E";
        case 0x5F:
            return "5F";
        case 0x60:
            return "60";
        case 0x61:
            return "61";
        case 0x62:
            return "62";
        case 0x63:
            return "63";
        case 0x64:
            return "64";
        case 0x65:
            return "65";
        case 0x66:
            return "66";
        case 0x67:
            return "67";
        case 0x68:
            return "68";
        case 0x69:
            return "69";
        case 0x6A:
            return "6A";
        case 0x6B:
            return "6B";
        case 0x6C:
            return "6C";
        case 0x6D:
            return "6D";
        case 0x6E:
            return "6E";
        case 0x6F:
            return "6F";
        case 0x70:
            return "70";
        case 0x71:
            return "71";
        case 0x72:
            return "72";
        case 0x73:
            return "73";
        case 0x74:
            return "74";
        case 0x75:
            return "75";
        case 0x76:
            return "76";
        case 0x77:
            return "77";
        case 0x78:
            return "78";
        case 0x79:
            return "79";
        case 0x7A:
            return "7A";
        case 0x7B:
            return "7B";
        case 0x7C:
            return "7C";
        case 0x7D:
            return "7D";
        case 0x7E:
            return "7E";
        case 0x7F:
            return "7F";
        case 0x80:
            return "80";
        case 0x81:
            return "81";
        case 0x82:
            return "82";
        case 0x83:
            return "83";
        case 0x84:
            return "84";
        case 0x85:
            return "85";
        case 0x86:
            return "86";
        case 0x87:
            return "87";
        case 0x88:
            return "88";
        case 0x89:
            return "89";
        case 0x8A:
            return "8A";
        case 0x8B:
            return "8B";
        case 0x8C:
            return "8C";
        case 0x8D:
            return "8D";
        case 0x8E:
            return "8E";
        case 0x8F:
            return "8F";
        case 0x90:
            return "90";
        case 0x91:
            return "91";
        case 0x92:
            return "92";
        case 0x93:
            return "93";
        case 0x94:
            return "94";
        case 0x95:
            return "95";
        case 0x96:
            return "96";
        case 0x97:
            return "97";
        case 0x98:
            return "98";
        case 0x99:
            return "99";
        case 0x9A:
            return "9A";
        case 0x9B:
            return "9B";
        case 0x9C:
            return "9C";
        case 0x9D:
            return "9D";
        case 0x9E:
            return "9E";
        case 0x9F:
            return "9F";
        case 0xA0:
            return "A0";
        case 0xA1:
            return "A1";
        case 0xA2:
            return "A2";
        case 0xA3:
            return "A3";
        case 0xA4:
            return "A4";
        case 0xA5:
            return "A5";
        case 0xA6:
            return "A6";
        case 0xA7:
            return "A7";
        case 0xA8:
            return "A8";
        case 0xA9:
            return "A9";
        case 0xAA:
            return "AA";
        case 0xAB:
            return "AB";
        case 0xAC:
            return "AC";
        case 0xAD:
            return "AD";
        case 0xAE:
            return "AE";
        case 0xAF:
            return "AF";
        case 0xB0:
            return "B0";
        case 0xB1:
            return "B1";
        case 0xB2:
            return "B2";
        case 0xB3:
            return "B3";
        case 0xB4:
            return "B4";
        case 0xB5:
            return "B5";
        case 0xB6:
            return "B6";
        case 0xB7:
            return "B7";
        case 0xB8:
            return "B8";
        case 0xB9:
            return "B9";
        case 0xBA:
            return "BA";
        case 0xBB:
            return "BB";
        case 0xBC:
            return "BC";
        case 0xBD:
            return "BD";
        case 0xBE:
            return "BE";
        case 0xBF:
            return "BF";
        case 0xC0:
            return "C0";
        case 0xC1:
            return "C1";
        case 0xC2:
            return "C2";
        case 0xC3:
            return "C3";
        case 0xC4:
            return "C4";
        case 0xC5:
            return "C5";
        case 0xC6:
            return "C6";
        case 0xC7:
            return "C7";
        case 0xC8:
            return "C8";
        case 0xC9:
            return "C9";
        case 0xCA:
            return "CA";
        case 0xCB:
            return "CB";
        case 0xCC:
            return "CC";
        case 0xCD:
            return "CD";
        case 0xCE:
            return "CE";
        case 0xCF:
            return "CF";
        case 0xD0:
            return "D0";
        case 0xD1:
            return "D1";
        case 0xD2:
            return "D2";
        case 0xD3:
            return "D3";
        case 0xD4:
            return "D4";
        case 0xD5:
            return "D5";
        case 0xD6:
            return "D6";
        case 0xD7:
            return "D7";
        case 0xD8:
            return "D8";
        case 0xD9:
            return "D9";
        case 0xDA:
            return "DA";
        case 0xDB:
            return "DB";
        case 0xDC:
            return "DC";
        case 0xDD:
            return "DD";
        case 0xDE:
            return "DE";
        case 0xDF:
            return "DF";
        case 0xE0:
            return "E0";
        case 0xE1:
            return "E1";
        case 0xE2:
            return "E2";
        case 0xE3:
            return "E3";
        case 0xE4:
            return "E4";
        case 0xE5:
            return "E5";
        case 0xE6:
            return "E6";
        case 0xE7:
            return "E7";
        case 0xE8:
            return "E8";
        case 0xE9:
            return "E9";
        case 0xEA:
            return "EA";
        case 0xEB:
            return "EB";
        case 0xEC:
            return "EC";
        case 0xED:
            return "ED";
        case 0xEE:
            return "EE";
        case 0xEF:
            return "EF";
        case 0xF0:
            return "F0";
        case 0xF1:
            return "F1";
        case 0xF2:
            return "F2";
        case 0xF3:
            return "F3";
        case 0xF4:
            return "F4";
        case 0xF5:
            return "F5";
        case 0xF6:
            return "F6";
        case 0xF7:
            return "F7";
        case 0xF8:
            return "F8";
        case 0xF9:
            return "F9";
        case 0xFA:
            return "FA";
        case 0xFB:
            return "FB";
        case 0xFC:
            return "FC";
        case 0xFD:
            return "FD";
        case 0xFE:
            return "FE";
        case 0xFF:
            return "FF";
        default:
            return "??";
        }
        return BYTE_HEX_STRINGS[UPPER_CASE][b & 0xFF];
    }
    /**
@@ -653,522 +150,7 @@
     *         using lowercase characters.
     */
    public static String byteToLowerHex(final byte b) {
        switch (b & 0xFF) {
        case 0x00:
            return "00";
        case 0x01:
            return "01";
        case 0x02:
            return "02";
        case 0x03:
            return "03";
        case 0x04:
            return "04";
        case 0x05:
            return "05";
        case 0x06:
            return "06";
        case 0x07:
            return "07";
        case 0x08:
            return "08";
        case 0x09:
            return "09";
        case 0x0A:
            return "0a";
        case 0x0B:
            return "0b";
        case 0x0C:
            return "0c";
        case 0x0D:
            return "0d";
        case 0x0E:
            return "0e";
        case 0x0F:
            return "0f";
        case 0x10:
            return "10";
        case 0x11:
            return "11";
        case 0x12:
            return "12";
        case 0x13:
            return "13";
        case 0x14:
            return "14";
        case 0x15:
            return "15";
        case 0x16:
            return "16";
        case 0x17:
            return "17";
        case 0x18:
            return "18";
        case 0x19:
            return "19";
        case 0x1A:
            return "1a";
        case 0x1B:
            return "1b";
        case 0x1C:
            return "1c";
        case 0x1D:
            return "1d";
        case 0x1E:
            return "1e";
        case 0x1F:
            return "1f";
        case 0x20:
            return "20";
        case 0x21:
            return "21";
        case 0x22:
            return "22";
        case 0x23:
            return "23";
        case 0x24:
            return "24";
        case 0x25:
            return "25";
        case 0x26:
            return "26";
        case 0x27:
            return "27";
        case 0x28:
            return "28";
        case 0x29:
            return "29";
        case 0x2A:
            return "2a";
        case 0x2B:
            return "2b";
        case 0x2C:
            return "2c";
        case 0x2D:
            return "2d";
        case 0x2E:
            return "2e";
        case 0x2F:
            return "2f";
        case 0x30:
            return "30";
        case 0x31:
            return "31";
        case 0x32:
            return "32";
        case 0x33:
            return "33";
        case 0x34:
            return "34";
        case 0x35:
            return "35";
        case 0x36:
            return "36";
        case 0x37:
            return "37";
        case 0x38:
            return "38";
        case 0x39:
            return "39";
        case 0x3A:
            return "3a";
        case 0x3B:
            return "3b";
        case 0x3C:
            return "3c";
        case 0x3D:
            return "3d";
        case 0x3E:
            return "3e";
        case 0x3F:
            return "3f";
        case 0x40:
            return "40";
        case 0x41:
            return "41";
        case 0x42:
            return "42";
        case 0x43:
            return "43";
        case 0x44:
            return "44";
        case 0x45:
            return "45";
        case 0x46:
            return "46";
        case 0x47:
            return "47";
        case 0x48:
            return "48";
        case 0x49:
            return "49";
        case 0x4A:
            return "4a";
        case 0x4B:
            return "4b";
        case 0x4C:
            return "4c";
        case 0x4D:
            return "4d";
        case 0x4E:
            return "4e";
        case 0x4F:
            return "4f";
        case 0x50:
            return "50";
        case 0x51:
            return "51";
        case 0x52:
            return "52";
        case 0x53:
            return "53";
        case 0x54:
            return "54";
        case 0x55:
            return "55";
        case 0x56:
            return "56";
        case 0x57:
            return "57";
        case 0x58:
            return "58";
        case 0x59:
            return "59";
        case 0x5A:
            return "5a";
        case 0x5B:
            return "5b";
        case 0x5C:
            return "5c";
        case 0x5D:
            return "5d";
        case 0x5E:
            return "5e";
        case 0x5F:
            return "5f";
        case 0x60:
            return "60";
        case 0x61:
            return "61";
        case 0x62:
            return "62";
        case 0x63:
            return "63";
        case 0x64:
            return "64";
        case 0x65:
            return "65";
        case 0x66:
            return "66";
        case 0x67:
            return "67";
        case 0x68:
            return "68";
        case 0x69:
            return "69";
        case 0x6A:
            return "6a";
        case 0x6B:
            return "6b";
        case 0x6C:
            return "6c";
        case 0x6D:
            return "6d";
        case 0x6E:
            return "6e";
        case 0x6F:
            return "6f";
        case 0x70:
            return "70";
        case 0x71:
            return "71";
        case 0x72:
            return "72";
        case 0x73:
            return "73";
        case 0x74:
            return "74";
        case 0x75:
            return "75";
        case 0x76:
            return "76";
        case 0x77:
            return "77";
        case 0x78:
            return "78";
        case 0x79:
            return "79";
        case 0x7A:
            return "7a";
        case 0x7B:
            return "7b";
        case 0x7C:
            return "7c";
        case 0x7D:
            return "7d";
        case 0x7E:
            return "7e";
        case 0x7F:
            return "7f";
        case 0x80:
            return "80";
        case 0x81:
            return "81";
        case 0x82:
            return "82";
        case 0x83:
            return "83";
        case 0x84:
            return "84";
        case 0x85:
            return "85";
        case 0x86:
            return "86";
        case 0x87:
            return "87";
        case 0x88:
            return "88";
        case 0x89:
            return "89";
        case 0x8A:
            return "8a";
        case 0x8B:
            return "8b";
        case 0x8C:
            return "8c";
        case 0x8D:
            return "8d";
        case 0x8E:
            return "8e";
        case 0x8F:
            return "8f";
        case 0x90:
            return "90";
        case 0x91:
            return "91";
        case 0x92:
            return "92";
        case 0x93:
            return "93";
        case 0x94:
            return "94";
        case 0x95:
            return "95";
        case 0x96:
            return "96";
        case 0x97:
            return "97";
        case 0x98:
            return "98";
        case 0x99:
            return "99";
        case 0x9A:
            return "9a";
        case 0x9B:
            return "9b";
        case 0x9C:
            return "9c";
        case 0x9D:
            return "9d";
        case 0x9E:
            return "9e";
        case 0x9F:
            return "9f";
        case 0xA0:
            return "a0";
        case 0xA1:
            return "a1";
        case 0xA2:
            return "a2";
        case 0xA3:
            return "a3";
        case 0xA4:
            return "a4";
        case 0xA5:
            return "a5";
        case 0xA6:
            return "a6";
        case 0xA7:
            return "a7";
        case 0xA8:
            return "a8";
        case 0xA9:
            return "a9";
        case 0xAA:
            return "aa";
        case 0xAB:
            return "ab";
        case 0xAC:
            return "ac";
        case 0xAD:
            return "ad";
        case 0xAE:
            return "ae";
        case 0xAF:
            return "af";
        case 0xB0:
            return "b0";
        case 0xB1:
            return "b1";
        case 0xB2:
            return "b2";
        case 0xB3:
            return "b3";
        case 0xB4:
            return "b4";
        case 0xB5:
            return "b5";
        case 0xB6:
            return "b6";
        case 0xB7:
            return "b7";
        case 0xB8:
            return "b8";
        case 0xB9:
            return "b9";
        case 0xBA:
            return "ba";
        case 0xBB:
            return "bb";
        case 0xBC:
            return "bc";
        case 0xBD:
            return "bd";
        case 0xBE:
            return "be";
        case 0xBF:
            return "bf";
        case 0xC0:
            return "c0";
        case 0xC1:
            return "c1";
        case 0xC2:
            return "c2";
        case 0xC3:
            return "c3";
        case 0xC4:
            return "c4";
        case 0xC5:
            return "c5";
        case 0xC6:
            return "c6";
        case 0xC7:
            return "c7";
        case 0xC8:
            return "c8";
        case 0xC9:
            return "c9";
        case 0xCA:
            return "ca";
        case 0xCB:
            return "cb";
        case 0xCC:
            return "cc";
        case 0xCD:
            return "cd";
        case 0xCE:
            return "ce";
        case 0xCF:
            return "cf";
        case 0xD0:
            return "d0";
        case 0xD1:
            return "d1";
        case 0xD2:
            return "d2";
        case 0xD3:
            return "d3";
        case 0xD4:
            return "d4";
        case 0xD5:
            return "d5";
        case 0xD6:
            return "d6";
        case 0xD7:
            return "d7";
        case 0xD8:
            return "d8";
        case 0xD9:
            return "d9";
        case 0xDA:
            return "da";
        case 0xDB:
            return "db";
        case 0xDC:
            return "dc";
        case 0xDD:
            return "dd";
        case 0xDE:
            return "de";
        case 0xDF:
            return "df";
        case 0xE0:
            return "e0";
        case 0xE1:
            return "e1";
        case 0xE2:
            return "e2";
        case 0xE3:
            return "e3";
        case 0xE4:
            return "e4";
        case 0xE5:
            return "e5";
        case 0xE6:
            return "e6";
        case 0xE7:
            return "e7";
        case 0xE8:
            return "e8";
        case 0xE9:
            return "e9";
        case 0xEA:
            return "ea";
        case 0xEB:
            return "eb";
        case 0xEC:
            return "ec";
        case 0xED:
            return "ed";
        case 0xEE:
            return "ee";
        case 0xEF:
            return "ef";
        case 0xF0:
            return "f0";
        case 0xF1:
            return "f1";
        case 0xF2:
            return "f2";
        case 0xF3:
            return "f3";
        case 0xF4:
            return "f4";
        case 0xF5:
            return "f5";
        case 0xF6:
            return "f6";
        case 0xF7:
            return "f7";
        case 0xF8:
            return "f8";
        case 0xF9:
            return "f9";
        case 0xFA:
            return "fa";
        case 0xFB:
            return "fb";
        case 0xFC:
            return "fc";
        case 0xFD:
            return "fd";
        case 0xFE:
            return "fe";
        case 0xFF:
            return "ff";
        default:
            return "??";
        }
        return BYTE_HEX_STRINGS[LOWER_CASE][b & 0xFF];
    }
    /**
opendj-server-legacy/src/main/java/org/opends/server/util/StaticUtils.java
@@ -102,12 +102,28 @@
   */
  public static final int MB = KB * KB;
  private static final String[][] BYTE_HEX_STRINGS = new String[2][256];
  private static final String[] BYTE_BIN_STRINGS = new String[256];
  private static final int UPPER_CASE = 0;
  private static final int LOWER_CASE = 1;
  /** Private constructor to prevent instantiation. */
  private StaticUtils() {
    // No implementation required.
  }
  static {
    String[] hexDigits = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"};
    for (int i = 0; i < 256; i++) {
      BYTE_HEX_STRINGS[UPPER_CASE][i] = hexDigits[i >>> 4] + hexDigits[i & 0xF];
      BYTE_HEX_STRINGS[LOWER_CASE][i] = BYTE_HEX_STRINGS[UPPER_CASE][i].toLowerCase();
      StringBuilder sb = new StringBuilder();
      for (int j = 7; j >= 0; j--) {
        sb.append((i & (1 << j)) == 0 ? "0" : "1");
      }
      BYTE_BIN_STRINGS[i] = sb.toString();
    }
  }
  /**
   * Construct a byte array containing the UTF-8 encoding of the
@@ -243,266 +259,7 @@
   */
  public static String byteToHex(byte b)
  {
    switch (b & 0xFF)
    {
      case 0x00:  return "00";
      case 0x01:  return "01";
      case 0x02:  return "02";
      case 0x03:  return "03";
      case 0x04:  return "04";
      case 0x05:  return "05";
      case 0x06:  return "06";
      case 0x07:  return "07";
      case 0x08:  return "08";
      case 0x09:  return "09";
      case 0x0A:  return "0A";
      case 0x0B:  return "0B";
      case 0x0C:  return "0C";
      case 0x0D:  return "0D";
      case 0x0E:  return "0E";
      case 0x0F:  return "0F";
      case 0x10:  return "10";
      case 0x11:  return "11";
      case 0x12:  return "12";
      case 0x13:  return "13";
      case 0x14:  return "14";
      case 0x15:  return "15";
      case 0x16:  return "16";
      case 0x17:  return "17";
      case 0x18:  return "18";
      case 0x19:  return "19";
      case 0x1A:  return "1A";
      case 0x1B:  return "1B";
      case 0x1C:  return "1C";
      case 0x1D:  return "1D";
      case 0x1E:  return "1E";
      case 0x1F:  return "1F";
      case 0x20:  return "20";
      case 0x21:  return "21";
      case 0x22:  return "22";
      case 0x23:  return "23";
      case 0x24:  return "24";
      case 0x25:  return "25";
      case 0x26:  return "26";
      case 0x27:  return "27";
      case 0x28:  return "28";
      case 0x29:  return "29";
      case 0x2A:  return "2A";
      case 0x2B:  return "2B";
      case 0x2C:  return "2C";
      case 0x2D:  return "2D";
      case 0x2E:  return "2E";
      case 0x2F:  return "2F";
      case 0x30:  return "30";
      case 0x31:  return "31";
      case 0x32:  return "32";
      case 0x33:  return "33";
      case 0x34:  return "34";
      case 0x35:  return "35";
      case 0x36:  return "36";
      case 0x37:  return "37";
      case 0x38:  return "38";
      case 0x39:  return "39";
      case 0x3A:  return "3A";
      case 0x3B:  return "3B";
      case 0x3C:  return "3C";
      case 0x3D:  return "3D";
      case 0x3E:  return "3E";
      case 0x3F:  return "3F";
      case 0x40:  return "40";
      case 0x41:  return "41";
      case 0x42:  return "42";
      case 0x43:  return "43";
      case 0x44:  return "44";
      case 0x45:  return "45";
      case 0x46:  return "46";
      case 0x47:  return "47";
      case 0x48:  return "48";
      case 0x49:  return "49";
      case 0x4A:  return "4A";
      case 0x4B:  return "4B";
      case 0x4C:  return "4C";
      case 0x4D:  return "4D";
      case 0x4E:  return "4E";
      case 0x4F:  return "4F";
      case 0x50:  return "50";
      case 0x51:  return "51";
      case 0x52:  return "52";
      case 0x53:  return "53";
      case 0x54:  return "54";
      case 0x55:  return "55";
      case 0x56:  return "56";
      case 0x57:  return "57";
      case 0x58:  return "58";
      case 0x59:  return "59";
      case 0x5A:  return "5A";
      case 0x5B:  return "5B";
      case 0x5C:  return "5C";
      case 0x5D:  return "5D";
      case 0x5E:  return "5E";
      case 0x5F:  return "5F";
      case 0x60:  return "60";
      case 0x61:  return "61";
      case 0x62:  return "62";
      case 0x63:  return "63";
      case 0x64:  return "64";
      case 0x65:  return "65";
      case 0x66:  return "66";
      case 0x67:  return "67";
      case 0x68:  return "68";
      case 0x69:  return "69";
      case 0x6A:  return "6A";
      case 0x6B:  return "6B";
      case 0x6C:  return "6C";
      case 0x6D:  return "6D";
      case 0x6E:  return "6E";
      case 0x6F:  return "6F";
      case 0x70:  return "70";
      case 0x71:  return "71";
      case 0x72:  return "72";
      case 0x73:  return "73";
      case 0x74:  return "74";
      case 0x75:  return "75";
      case 0x76:  return "76";
      case 0x77:  return "77";
      case 0x78:  return "78";
      case 0x79:  return "79";
      case 0x7A:  return "7A";
      case 0x7B:  return "7B";
      case 0x7C:  return "7C";
      case 0x7D:  return "7D";
      case 0x7E:  return "7E";
      case 0x7F:  return "7F";
      case 0x80:  return "80";
      case 0x81:  return "81";
      case 0x82:  return "82";
      case 0x83:  return "83";
      case 0x84:  return "84";
      case 0x85:  return "85";
      case 0x86:  return "86";
      case 0x87:  return "87";
      case 0x88:  return "88";
      case 0x89:  return "89";
      case 0x8A:  return "8A";
      case 0x8B:  return "8B";
      case 0x8C:  return "8C";
      case 0x8D:  return "8D";
      case 0x8E:  return "8E";
      case 0x8F:  return "8F";
      case 0x90:  return "90";
      case 0x91:  return "91";
      case 0x92:  return "92";
      case 0x93:  return "93";
      case 0x94:  return "94";
      case 0x95:  return "95";
      case 0x96:  return "96";
      case 0x97:  return "97";
      case 0x98:  return "98";
      case 0x99:  return "99";
      case 0x9A:  return "9A";
      case 0x9B:  return "9B";
      case 0x9C:  return "9C";
      case 0x9D:  return "9D";
      case 0x9E:  return "9E";
      case 0x9F:  return "9F";
      case 0xA0:  return "A0";
      case 0xA1:  return "A1";
      case 0xA2:  return "A2";
      case 0xA3:  return "A3";
      case 0xA4:  return "A4";
      case 0xA5:  return "A5";
      case 0xA6:  return "A6";
      case 0xA7:  return "A7";
      case 0xA8:  return "A8";
      case 0xA9:  return "A9";
      case 0xAA:  return "AA";
      case 0xAB:  return "AB";
      case 0xAC:  return "AC";
      case 0xAD:  return "AD";
      case 0xAE:  return "AE";
      case 0xAF:  return "AF";
      case 0xB0:  return "B0";
      case 0xB1:  return "B1";
      case 0xB2:  return "B2";
      case 0xB3:  return "B3";
      case 0xB4:  return "B4";
      case 0xB5:  return "B5";
      case 0xB6:  return "B6";
      case 0xB7:  return "B7";
      case 0xB8:  return "B8";
      case 0xB9:  return "B9";
      case 0xBA:  return "BA";
      case 0xBB:  return "BB";
      case 0xBC:  return "BC";
      case 0xBD:  return "BD";
      case 0xBE:  return "BE";
      case 0xBF:  return "BF";
      case 0xC0:  return "C0";
      case 0xC1:  return "C1";
      case 0xC2:  return "C2";
      case 0xC3:  return "C3";
      case 0xC4:  return "C4";
      case 0xC5:  return "C5";
      case 0xC6:  return "C6";
      case 0xC7:  return "C7";
      case 0xC8:  return "C8";
      case 0xC9:  return "C9";
      case 0xCA:  return "CA";
      case 0xCB:  return "CB";
      case 0xCC:  return "CC";
      case 0xCD:  return "CD";
      case 0xCE:  return "CE";
      case 0xCF:  return "CF";
      case 0xD0:  return "D0";
      case 0xD1:  return "D1";
      case 0xD2:  return "D2";
      case 0xD3:  return "D3";
      case 0xD4:  return "D4";
      case 0xD5:  return "D5";
      case 0xD6:  return "D6";
      case 0xD7:  return "D7";
      case 0xD8:  return "D8";
      case 0xD9:  return "D9";
      case 0xDA:  return "DA";
      case 0xDB:  return "DB";
      case 0xDC:  return "DC";
      case 0xDD:  return "DD";
      case 0xDE:  return "DE";
      case 0xDF:  return "DF";
      case 0xE0:  return "E0";
      case 0xE1:  return "E1";
      case 0xE2:  return "E2";
      case 0xE3:  return "E3";
      case 0xE4:  return "E4";
      case 0xE5:  return "E5";
      case 0xE6:  return "E6";
      case 0xE7:  return "E7";
      case 0xE8:  return "E8";
      case 0xE9:  return "E9";
      case 0xEA:  return "EA";
      case 0xEB:  return "EB";
      case 0xEC:  return "EC";
      case 0xED:  return "ED";
      case 0xEE:  return "EE";
      case 0xEF:  return "EF";
      case 0xF0:  return "F0";
      case 0xF1:  return "F1";
      case 0xF2:  return "F2";
      case 0xF3:  return "F3";
      case 0xF4:  return "F4";
      case 0xF5:  return "F5";
      case 0xF6:  return "F6";
      case 0xF7:  return "F7";
      case 0xF8:  return "F8";
      case 0xF9:  return "F9";
      case 0xFA:  return "FA";
      case 0xFB:  return "FB";
      case 0xFC:  return "FC";
      case 0xFD:  return "FD";
      case 0xFE:  return "FE";
      case 0xFF:  return "FF";
      default:    return "??";
    }
    return BYTE_HEX_STRINGS[UPPER_CASE][b & 0xFF];
  }
@@ -518,266 +275,7 @@
   */
  public static String byteToLowerHex(byte b)
  {
    switch (b & 0xFF)
    {
      case 0x00:  return "00";
      case 0x01:  return "01";
      case 0x02:  return "02";
      case 0x03:  return "03";
      case 0x04:  return "04";
      case 0x05:  return "05";
      case 0x06:  return "06";
      case 0x07:  return "07";
      case 0x08:  return "08";
      case 0x09:  return "09";
      case 0x0A:  return "0a";
      case 0x0B:  return "0b";
      case 0x0C:  return "0c";
      case 0x0D:  return "0d";
      case 0x0E:  return "0e";
      case 0x0F:  return "0f";
      case 0x10:  return "10";
      case 0x11:  return "11";
      case 0x12:  return "12";
      case 0x13:  return "13";
      case 0x14:  return "14";
      case 0x15:  return "15";
      case 0x16:  return "16";
      case 0x17:  return "17";
      case 0x18:  return "18";
      case 0x19:  return "19";
      case 0x1A:  return "1a";
      case 0x1B:  return "1b";
      case 0x1C:  return "1c";
      case 0x1D:  return "1d";
      case 0x1E:  return "1e";
      case 0x1F:  return "1f";
      case 0x20:  return "20";
      case 0x21:  return "21";
      case 0x22:  return "22";
      case 0x23:  return "23";
      case 0x24:  return "24";
      case 0x25:  return "25";
      case 0x26:  return "26";
      case 0x27:  return "27";
      case 0x28:  return "28";
      case 0x29:  return "29";
      case 0x2A:  return "2a";
      case 0x2B:  return "2b";
      case 0x2C:  return "2c";
      case 0x2D:  return "2d";
      case 0x2E:  return "2e";
      case 0x2F:  return "2f";
      case 0x30:  return "30";
      case 0x31:  return "31";
      case 0x32:  return "32";
      case 0x33:  return "33";
      case 0x34:  return "34";
      case 0x35:  return "35";
      case 0x36:  return "36";
      case 0x37:  return "37";
      case 0x38:  return "38";
      case 0x39:  return "39";
      case 0x3A:  return "3a";
      case 0x3B:  return "3b";
      case 0x3C:  return "3c";
      case 0x3D:  return "3d";
      case 0x3E:  return "3e";
      case 0x3F:  return "3f";
      case 0x40:  return "40";
      case 0x41:  return "41";
      case 0x42:  return "42";
      case 0x43:  return "43";
      case 0x44:  return "44";
      case 0x45:  return "45";
      case 0x46:  return "46";
      case 0x47:  return "47";
      case 0x48:  return "48";
      case 0x49:  return "49";
      case 0x4A:  return "4a";
      case 0x4B:  return "4b";
      case 0x4C:  return "4c";
      case 0x4D:  return "4d";
      case 0x4E:  return "4e";
      case 0x4F:  return "4f";
      case 0x50:  return "50";
      case 0x51:  return "51";
      case 0x52:  return "52";
      case 0x53:  return "53";
      case 0x54:  return "54";
      case 0x55:  return "55";
      case 0x56:  return "56";
      case 0x57:  return "57";
      case 0x58:  return "58";
      case 0x59:  return "59";
      case 0x5A:  return "5a";
      case 0x5B:  return "5b";
      case 0x5C:  return "5c";
      case 0x5D:  return "5d";
      case 0x5E:  return "5e";
      case 0x5F:  return "5f";
      case 0x60:  return "60";
      case 0x61:  return "61";
      case 0x62:  return "62";
      case 0x63:  return "63";
      case 0x64:  return "64";
      case 0x65:  return "65";
      case 0x66:  return "66";
      case 0x67:  return "67";
      case 0x68:  return "68";
      case 0x69:  return "69";
      case 0x6A:  return "6a";
      case 0x6B:  return "6b";
      case 0x6C:  return "6c";
      case 0x6D:  return "6d";
      case 0x6E:  return "6e";
      case 0x6F:  return "6f";
      case 0x70:  return "70";
      case 0x71:  return "71";
      case 0x72:  return "72";
      case 0x73:  return "73";
      case 0x74:  return "74";
      case 0x75:  return "75";
      case 0x76:  return "76";
      case 0x77:  return "77";
      case 0x78:  return "78";
      case 0x79:  return "79";
      case 0x7A:  return "7a";
      case 0x7B:  return "7b";
      case 0x7C:  return "7c";
      case 0x7D:  return "7d";
      case 0x7E:  return "7e";
      case 0x7F:  return "7f";
      case 0x80:  return "80";
      case 0x81:  return "81";
      case 0x82:  return "82";
      case 0x83:  return "83";
      case 0x84:  return "84";
      case 0x85:  return "85";
      case 0x86:  return "86";
      case 0x87:  return "87";
      case 0x88:  return "88";
      case 0x89:  return "89";
      case 0x8A:  return "8a";
      case 0x8B:  return "8b";
      case 0x8C:  return "8c";
      case 0x8D:  return "8d";
      case 0x8E:  return "8e";
      case 0x8F:  return "8f";
      case 0x90:  return "90";
      case 0x91:  return "91";
      case 0x92:  return "92";
      case 0x93:  return "93";
      case 0x94:  return "94";
      case 0x95:  return "95";
      case 0x96:  return "96";
      case 0x97:  return "97";
      case 0x98:  return "98";
      case 0x99:  return "99";
      case 0x9A:  return "9a";
      case 0x9B:  return "9b";
      case 0x9C:  return "9c";
      case 0x9D:  return "9d";
      case 0x9E:  return "9e";
      case 0x9F:  return "9f";
      case 0xA0:  return "a0";
      case 0xA1:  return "a1";
      case 0xA2:  return "a2";
      case 0xA3:  return "a3";
      case 0xA4:  return "a4";
      case 0xA5:  return "a5";
      case 0xA6:  return "a6";
      case 0xA7:  return "a7";
      case 0xA8:  return "a8";
      case 0xA9:  return "a9";
      case 0xAA:  return "aa";
      case 0xAB:  return "ab";
      case 0xAC:  return "ac";
      case 0xAD:  return "ad";
      case 0xAE:  return "ae";
      case 0xAF:  return "af";
      case 0xB0:  return "b0";
      case 0xB1:  return "b1";
      case 0xB2:  return "b2";
      case 0xB3:  return "b3";
      case 0xB4:  return "b4";
      case 0xB5:  return "b5";
      case 0xB6:  return "b6";
      case 0xB7:  return "b7";
      case 0xB8:  return "b8";
      case 0xB9:  return "b9";
      case 0xBA:  return "ba";
      case 0xBB:  return "bb";
      case 0xBC:  return "bc";
      case 0xBD:  return "bd";
      case 0xBE:  return "be";
      case 0xBF:  return "bf";
      case 0xC0:  return "c0";
      case 0xC1:  return "c1";
      case 0xC2:  return "c2";
      case 0xC3:  return "c3";
      case 0xC4:  return "c4";
      case 0xC5:  return "c5";
      case 0xC6:  return "c6";
      case 0xC7:  return "c7";
      case 0xC8:  return "c8";
      case 0xC9:  return "c9";
      case 0xCA:  return "ca";
      case 0xCB:  return "cb";
      case 0xCC:  return "cc";
      case 0xCD:  return "cd";
      case 0xCE:  return "ce";
      case 0xCF:  return "cf";
      case 0xD0:  return "d0";
      case 0xD1:  return "d1";
      case 0xD2:  return "d2";
      case 0xD3:  return "d3";
      case 0xD4:  return "d4";
      case 0xD5:  return "d5";
      case 0xD6:  return "d6";
      case 0xD7:  return "d7";
      case 0xD8:  return "d8";
      case 0xD9:  return "d9";
      case 0xDA:  return "da";
      case 0xDB:  return "db";
      case 0xDC:  return "dc";
      case 0xDD:  return "dd";
      case 0xDE:  return "de";
      case 0xDF:  return "df";
      case 0xE0:  return "e0";
      case 0xE1:  return "e1";
      case 0xE2:  return "e2";
      case 0xE3:  return "e3";
      case 0xE4:  return "e4";
      case 0xE5:  return "e5";
      case 0xE6:  return "e6";
      case 0xE7:  return "e7";
      case 0xE8:  return "e8";
      case 0xE9:  return "e9";
      case 0xEA:  return "ea";
      case 0xEB:  return "eb";
      case 0xEC:  return "ec";
      case 0xED:  return "ed";
      case 0xEE:  return "ee";
      case 0xEF:  return "ef";
      case 0xF0:  return "f0";
      case 0xF1:  return "f1";
      case 0xF2:  return "f2";
      case 0xF3:  return "f3";
      case 0xF4:  return "f4";
      case 0xF5:  return "f5";
      case 0xF6:  return "f6";
      case 0xF7:  return "f7";
      case 0xF8:  return "f8";
      case 0xF9:  return "f9";
      case 0xFA:  return "fa";
      case 0xFB:  return "fb";
      case 0xFC:  return "fc";
      case 0xFD:  return "fd";
      case 0xFE:  return "fe";
      case 0xFF:  return "ff";
      default:    return "??";
    }
    return BYTE_HEX_STRINGS[LOWER_CASE][b & 0xFF];
  }
@@ -1171,266 +669,7 @@
   */
  public static String byteToBinary(byte b)
  {
    switch (b & 0xFF)
    {
      case 0x00:  return "00000000";
      case 0x01:  return "00000001";
      case 0x02:  return "00000010";
      case 0x03:  return "00000011";
      case 0x04:  return "00000100";
      case 0x05:  return "00000101";
      case 0x06:  return "00000110";
      case 0x07:  return "00000111";
      case 0x08:  return "00001000";
      case 0x09:  return "00001001";
      case 0x0A:  return "00001010";
      case 0x0B:  return "00001011";
      case 0x0C:  return "00001100";
      case 0x0D:  return "00001101";
      case 0x0E:  return "00001110";
      case 0x0F:  return "00001111";
      case 0x10:  return "00010000";
      case 0x11:  return "00010001";
      case 0x12:  return "00010010";
      case 0x13:  return "00010011";
      case 0x14:  return "00010100";
      case 0x15:  return "00010101";
      case 0x16:  return "00010110";
      case 0x17:  return "00010111";
      case 0x18:  return "00011000";
      case 0x19:  return "00011001";
      case 0x1A:  return "00011010";
      case 0x1B:  return "00011011";
      case 0x1C:  return "00011100";
      case 0x1D:  return "00011101";
      case 0x1E:  return "00011110";
      case 0x1F:  return "00011111";
      case 0x20:  return "00100000";
      case 0x21:  return "00100001";
      case 0x22:  return "00100010";
      case 0x23:  return "00100011";
      case 0x24:  return "00100100";
      case 0x25:  return "00100101";
      case 0x26:  return "00100110";
      case 0x27:  return "00100111";
      case 0x28:  return "00101000";
      case 0x29:  return "00101001";
      case 0x2A:  return "00101010";
      case 0x2B:  return "00101011";
      case 0x2C:  return "00101100";
      case 0x2D:  return "00101101";
      case 0x2E:  return "00101110";
      case 0x2F:  return "00101111";
      case 0x30:  return "00110000";
      case 0x31:  return "00110001";
      case 0x32:  return "00110010";
      case 0x33:  return "00110011";
      case 0x34:  return "00110100";
      case 0x35:  return "00110101";
      case 0x36:  return "00110110";
      case 0x37:  return "00110111";
      case 0x38:  return "00111000";
      case 0x39:  return "00111001";
      case 0x3A:  return "00111010";
      case 0x3B:  return "00111011";
      case 0x3C:  return "00111100";
      case 0x3D:  return "00111101";
      case 0x3E:  return "00111110";
      case 0x3F:  return "00111111";
      case 0x40:  return "01000000";
      case 0x41:  return "01000001";
      case 0x42:  return "01000010";
      case 0x43:  return "01000011";
      case 0x44:  return "01000100";
      case 0x45:  return "01000101";
      case 0x46:  return "01000110";
      case 0x47:  return "01000111";
      case 0x48:  return "01001000";
      case 0x49:  return "01001001";
      case 0x4A:  return "01001010";
      case 0x4B:  return "01001011";
      case 0x4C:  return "01001100";
      case 0x4D:  return "01001101";
      case 0x4E:  return "01001110";
      case 0x4F:  return "01001111";
      case 0x50:  return "01010000";
      case 0x51:  return "01010001";
      case 0x52:  return "01010010";
      case 0x53:  return "01010011";
      case 0x54:  return "01010100";
      case 0x55:  return "01010101";
      case 0x56:  return "01010110";
      case 0x57:  return "01010111";
      case 0x58:  return "01011000";
      case 0x59:  return "01011001";
      case 0x5A:  return "01011010";
      case 0x5B:  return "01011011";
      case 0x5C:  return "01011100";
      case 0x5D:  return "01011101";
      case 0x5E:  return "01011110";
      case 0x5F:  return "01011111";
      case 0x60:  return "01100000";
      case 0x61:  return "01100001";
      case 0x62:  return "01100010";
      case 0x63:  return "01100011";
      case 0x64:  return "01100100";
      case 0x65:  return "01100101";
      case 0x66:  return "01100110";
      case 0x67:  return "01100111";
      case 0x68:  return "01101000";
      case 0x69:  return "01101001";
      case 0x6A:  return "01101010";
      case 0x6B:  return "01101011";
      case 0x6C:  return "01101100";
      case 0x6D:  return "01101101";
      case 0x6E:  return "01101110";
      case 0x6F:  return "01101111";
      case 0x70:  return "01110000";
      case 0x71:  return "01110001";
      case 0x72:  return "01110010";
      case 0x73:  return "01110011";
      case 0x74:  return "01110100";
      case 0x75:  return "01110101";
      case 0x76:  return "01110110";
      case 0x77:  return "01110111";
      case 0x78:  return "01111000";
      case 0x79:  return "01111001";
      case 0x7A:  return "01111010";
      case 0x7B:  return "01111011";
      case 0x7C:  return "01111100";
      case 0x7D:  return "01111101";
      case 0x7E:  return "01111110";
      case 0x7F:  return "01111111";
      case 0x80:  return "10000000";
      case 0x81:  return "10000001";
      case 0x82:  return "10000010";
      case 0x83:  return "10000011";
      case 0x84:  return "10000100";
      case 0x85:  return "10000101";
      case 0x86:  return "10000110";
      case 0x87:  return "10000111";
      case 0x88:  return "10001000";
      case 0x89:  return "10001001";
      case 0x8A:  return "10001010";
      case 0x8B:  return "10001011";
      case 0x8C:  return "10001100";
      case 0x8D:  return "10001101";
      case 0x8E:  return "10001110";
      case 0x8F:  return "10001111";
      case 0x90:  return "10010000";
      case 0x91:  return "10010001";
      case 0x92:  return "10010010";
      case 0x93:  return "10010011";
      case 0x94:  return "10010100";
      case 0x95:  return "10010101";
      case 0x96:  return "10010110";
      case 0x97:  return "10010111";
      case 0x98:  return "10011000";
      case 0x99:  return "10011001";
      case 0x9A:  return "10011010";
      case 0x9B:  return "10011011";
      case 0x9C:  return "10011100";
      case 0x9D:  return "10011101";
      case 0x9E:  return "10011110";
      case 0x9F:  return "10011111";
      case 0xA0:  return "10100000";
      case 0xA1:  return "10100001";
      case 0xA2:  return "10100010";
      case 0xA3:  return "10100011";
      case 0xA4:  return "10100100";
      case 0xA5:  return "10100101";
      case 0xA6:  return "10100110";
      case 0xA7:  return "10100111";
      case 0xA8:  return "10101000";
      case 0xA9:  return "10101001";
      case 0xAA:  return "10101010";
      case 0xAB:  return "10101011";
      case 0xAC:  return "10101100";
      case 0xAD:  return "10101101";
      case 0xAE:  return "10101110";
      case 0xAF:  return "10101111";
      case 0xB0:  return "10110000";
      case 0xB1:  return "10110001";
      case 0xB2:  return "10110010";
      case 0xB3:  return "10110011";
      case 0xB4:  return "10110100";
      case 0xB5:  return "10110101";
      case 0xB6:  return "10110110";
      case 0xB7:  return "10110111";
      case 0xB8:  return "10111000";
      case 0xB9:  return "10111001";
      case 0xBA:  return "10111010";
      case 0xBB:  return "10111011";
      case 0xBC:  return "10111100";
      case 0xBD:  return "10111101";
      case 0xBE:  return "10111110";
      case 0xBF:  return "10111111";
      case 0xC0:  return "11000000";
      case 0xC1:  return "11000001";
      case 0xC2:  return "11000010";
      case 0xC3:  return "11000011";
      case 0xC4:  return "11000100";
      case 0xC5:  return "11000101";
      case 0xC6:  return "11000110";
      case 0xC7:  return "11000111";
      case 0xC8:  return "11001000";
      case 0xC9:  return "11001001";
      case 0xCA:  return "11001010";
      case 0xCB:  return "11001011";
      case 0xCC:  return "11001100";
      case 0xCD:  return "11001101";
      case 0xCE:  return "11001110";
      case 0xCF:  return "11001111";
      case 0xD0:  return "11010000";
      case 0xD1:  return "11010001";
      case 0xD2:  return "11010010";
      case 0xD3:  return "11010011";
      case 0xD4:  return "11010100";
      case 0xD5:  return "11010101";
      case 0xD6:  return "11010110";
      case 0xD7:  return "11010111";
      case 0xD8:  return "11011000";
      case 0xD9:  return "11011001";
      case 0xDA:  return "11011010";
      case 0xDB:  return "11011011";
      case 0xDC:  return "11011100";
      case 0xDD:  return "11011101";
      case 0xDE:  return "11011110";
      case 0xDF:  return "11011111";
      case 0xE0:  return "11100000";
      case 0xE1:  return "11100001";
      case 0xE2:  return "11100010";
      case 0xE3:  return "11100011";
      case 0xE4:  return "11100100";
      case 0xE5:  return "11100101";
      case 0xE6:  return "11100110";
      case 0xE7:  return "11100111";
      case 0xE8:  return "11101000";
      case 0xE9:  return "11101001";
      case 0xEA:  return "11101010";
      case 0xEB:  return "11101011";
      case 0xEC:  return "11101100";
      case 0xED:  return "11101101";
      case 0xEE:  return "11101110";
      case 0xEF:  return "11101111";
      case 0xF0:  return "11110000";
      case 0xF1:  return "11110001";
      case 0xF2:  return "11110010";
      case 0xF3:  return "11110011";
      case 0xF4:  return "11110100";
      case 0xF5:  return "11110101";
      case 0xF6:  return "11110110";
      case 0xF7:  return "11110111";
      case 0xF8:  return "11111000";
      case 0xF9:  return "11111001";
      case 0xFA:  return "11111010";
      case 0xFB:  return "11111011";
      case 0xFC:  return "11111100";
      case 0xFD:  return "11111101";
      case 0xFE:  return "11111110";
      case 0xFF:  return "11111111";
      default:    return "????????";
    }
    return BYTE_BIN_STRINGS[b & 0xFF];
  }