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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// This Source Code is in the Public Domain per: http://unlicense.org
package org.litesoft.codec;

/**
 * Support Transforming between a character and the first 6 bits (0-63) of a Positive int.
 * <p/>
 * The 64 characters used are the Alpha-Numeric characters of 7-bit Ascii, a dash ('-'), and a period ('.'); in the following order:
 * <li>0-9</li>
 * <li>A-Z</li>
 * <li>a-z</li>
 * <li>'-'</li>
 * <li>'.'</li>
 * </p>
 * An additional <i>escape</i> character is maintained that is guaranteed to NOT be in the encoded 6 bit set, but still be human readable.
 */
public class SixBitCodec
{
    public static final char NOT_USED_NOT = '!';

    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/Java/core/Anywhere/src/org/litesoft/codec/SixBitCodec.java

Diff revisions: vs.
Revision Author Commited Message
947 Diff Diff GeorgeS picture GeorgeS Fri 06 Jun, 2014 23:36:56 +0000

Correct Spelling of package!

834 Diff Diff GeorgeS picture GeorgeS Sun 02 Sep, 2012 14:00:11 +0000
831 Diff Diff GeorgeS picture GeorgeS Fri 31 Aug, 2012 22:39:56 +0000
773 Diff Diff GeorgeS picture GeorgeS Sun 15 Jul, 2012 22:39:12 +0000
766 Diff Diff GeorgeS picture GeorgeS Sat 14 Jul, 2012 16:38:04 +0000

!

490 GeorgeS picture GeorgeS Fri 09 Sep, 2011 18:11:40 +0000

Encoding