### Question:
Base58 { public static String encode(byte[] input) { if (input.length == 0) { return ""; } input = copyOfRange(input, 0, input.length); int zeroCount = 0; while (zeroCount < input.length && input[zeroCount] == 0) { ++zeroCount; } byte[] temp = new byte[input.length * 2]; int j = temp.length; int startAt = zeroCount; while (startAt < input.length) { byte mod = divmod58(input, startAt); if (input[startAt] == 0) { ++startAt; } temp[--j] = (byte) ALPHABET[mod]; } while (j < temp.length && temp[j] == ALPHABET[0]) { ++j; } while (--zeroCount >= 0) { temp[--j] = (byte) ALPHABET[0]; } byte[] output = copyOfRange(temp, j, temp.length); try { return new String(output, "US-ASCII"); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } }  static String encode(byte[] input); static byte[] decode(String input); static BigInteger decodeToBigInteger(String input); static byte[] decodeChecked(String input); static final char[] ALPHABET; }### Answer:
@Test public void testEncode() throws Exception { byte[] testbytes = "Hello World".getBytes(); assertEquals("JxF12TrwUP45BMd", Base58.encode(testbytes)); BigInteger bi = BigInteger.valueOf(3471844090L); assertEquals("16Ho7Hs", Base58.encode(bi.toByteArray())); byte[] zeroBytes1 = new byte[1]; assertEquals("1", Base58.encode(zeroBytes1)); byte[] zeroBytes7 = new byte[7]; assertEquals("1111111", Base58.encode(zeroBytes7)); assertEquals("", Base58.encode(new byte[0])); }