Subversion Repository Public Repository

litesoft

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package com.temp.shared.utils;

/**
 * Support Transforming between a character and the first 6 bits (0-63) of a
 * Positive int.
 * <p/>
 * The 64 characters used are the ALph-Numeric characters of 7-bit Ascii, a dash
 * ('-'), and a period ('.').
 */
public class SixBitCodec {
    public static char encode(int pValue) {
        if (pValue < 0) {
            throw new IllegalArgumentException("Negative int not supported");
        }
        pValue = pValue & 63;
        if (pValue < 10) {
            return (char) ('0' + pValue);
        }
        if ((pValue -= 10) < 26) {
            return (char) ('A' + pValue);
        }
        if ((pValue -= 26) < 26) {
            return (char) ('a' + pValue);
        }
        return ((pValue -= 26) == 0) ? '-' : '.';
    }

    public static int decode(char pValue) {
        if (('0' <= pValue) && (pValue <= '9')) {
            return pValue - '0';
        }
        if (('A' <= pValue) && (pValue <= 'Z')) {
            return (pValue - 'A') + 10;
        }
        if (('a' <= pValue) && (pValue <= 'z')) {
            return (pValue - 'a') + 36;
        }
        if (pValue == '-') {
            return 62;
        }
        if (pValue == '.') {
            return 63;
        }
        throw new IllegalArgumentException("Unacceptable character '" + pValue + "': " + (int) pValue);
    }
}

Commits for litesoft/trunk/GWT_Sandbox/FormEngine/src/com/temp/shared/utils/SixBitCodec.java

Diff revisions: vs.
Revision Author Commited Message
626 GeorgeS picture GeorgeS Wed 11 Apr, 2012 19:39:41 +0000