Class BaseN


  • public final class BaseN
    extends Object
    Class that represents the base-n encodings.
    • Constructor Detail

      • BaseN

        public BaseN​(int radix)
        Public constructor for the base-n object. The radix is the alphabet size. The supported alphabet sizes are from 2 to 64. If there are mixed cases in the alphabet, the base-n is case SENSITIVE. The encoded string length is equal to `CEIL(128 / LOG2(n))`, where n is the radix. The encoded string is padded to fit the expected length. The padding character is the first character of the string. For example, the padding character for the alphabet "abcdef0123456" is 'a'. The example below shows how to create a BaseN for an hypothetical base-26 encoding that contains only letters. You only need to pass a number 40.
         String radix = 40;
         BaseN base = new BaseN(radix);
         
        If radix is greater than 36, the alphabet generated is a subset of the character sequence "0-9A-Za-z-_". Otherwise it is a subset of "0-9a-z". In the example above the resulting alphabet is "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcd" (0-9A-Za-d).
        Parameters:
        radix - the radix to be used
      • BaseN

        public BaseN​(String alphabet)
        Public constructor for the base-n object. The radix is the alphabet size. The supported alphabet sizes are from 2 to 64. If there are mixed cases in the alphabet, the base-n is case SENSITIVE. The encoded string length is equal to `CEIL(128 / LOG2(n))`, where n is the radix. The encoded string is padded to fit the expected length. The padding character is the first character of the string. For example, the padding character for the alphabet "abcdef0123456" is 'a'. The example below shows how to create a BaseN for an hypothetical base-26 encoding that contains only letters. You only need to pass a string with 26 characters.
         String alphabet = "abcdefghijklmnopqrstuvwxyz";
         BaseN base = new BaseN(alphabet);
         
        Alphabet strings similar to "a-f0-9" are expanded to "abcdef0123456789". The same example using the string "a-z" instead of "abcdefghijklmnopqrstuvwxyz":
         String alphabet = "a-z";
         BaseN base = new BaseN(alphabet);
         
        Parameters:
        alphabet - the alphabet to be used
    • Method Detail

      • getRadix

        public int getRadix()
      • getLength

        public int getLength()
      • getPadding

        public char getPadding()
      • isSensitive

        public boolean isSensitive()
      • getAlphabet

        public CharArray getAlphabet()
      • isValid

        public boolean isValid​(String string)
      • isValid

        public boolean isValid​(char[] chars)
      • expand

        protected static String expand​(String string)
        Expands char sequences similar to 0-9, a-z and A-Z.
        Parameters:
        string - a string to be expanded
        Returns:
        a string
      • expand

        protected static char[] expand​(char a,
                                       char b)