2323 */
2424package com .github .underscore ;
2525
26- import java .nio .charset .StandardCharsets ;
2726import java .util .HashMap ;
2827import java .util .Map ;
2928
3029public final class Base32 {
3130
3231 private static final Base32 INSTANCE = new Base32 ();
33-
34- private final char [] digits ;
35- private final int mask ;
36- private final int shift ;
37- private final Map <Character , Integer > charMap ;
32+ private final char [] digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef" .toCharArray ();
33+ private final int mask = digits .length - 1 ;
34+ private final int shift = Integer .numberOfTrailingZeros (digits .length );
35+ private final Map <Character , Integer > charMap = new HashMap <>();
3836
3937 private Base32 () {
40- digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef" .toCharArray ();
41- mask = digits .length - 1 ;
42- shift = Integer .numberOfTrailingZeros (digits .length );
43- charMap = new HashMap <>();
44- for (int index = 0 ; index < digits .length ; index += 1 ) {
38+ for (int index = 0 ; index < digits .length ; index ++) {
4539 charMap .put (digits [index ], index );
4640 }
4741 }
4842
4943 public static String decode (final String encoded ) {
50- return new String (INSTANCE .decodeInternal (encoded ), StandardCharsets . UTF_8 );
44+ return new String (INSTANCE .decodeInternal (encoded ));
5145 }
5246
5347 private byte [] decodeInternal (final String encoded ) {
@@ -76,25 +70,23 @@ private byte[] decodeInternal(final String encoded) {
7670 }
7771
7872 public static String encode (final String data ) {
79- return INSTANCE .encodeInternal (data .getBytes (StandardCharsets . UTF_8 ));
73+ return INSTANCE .encodeInternal (data .getBytes ());
8074 }
8175
8276 private String encodeInternal (final byte [] data ) {
8377 if (data .length == 0 ) {
8478 return "" ;
8579 }
86-
8780 int outputLength = (data .length * 8 + shift - 1 ) / shift ;
8881 StringBuilder result = new StringBuilder (outputLength );
89-
9082 int buffer = data [0 ];
9183 int next = 1 ;
9284 int bitsLeft = 8 ;
9385 while (bitsLeft > 0 || next < data .length ) {
9486 if (bitsLeft < shift ) {
9587 if (next < data .length ) {
9688 buffer <<= 8 ;
97- buffer = buffer | (data [next ++] & 0xff );
89+ buffer |= (data [next ++] & 0xff );
9890 bitsLeft += 8 ;
9991 } else {
10092 int pad = shift - bitsLeft ;
@@ -110,7 +102,6 @@ private String encodeInternal(final byte[] data) {
110102 }
111103
112104 public static class DecodingException extends RuntimeException {
113-
114105 public DecodingException (final String message ) {
115106 super (message );
116107 }
0 commit comments