+ * Otherwise, assume bytes contain literal address. + */ public static String decodeAddress(byte[] encodedAddress) { + int lastNonZeroIndex = -1; + for (int i = encodedAddress.length - 1; i >= 0; --i) { + byte b = encodedAddress[i]; + + if (b == 0 && lastNonZeroIndex == -1) + continue; + + if (lastNonZeroIndex == -1) + lastNonZeroIndex = i; + + if (b < 32 || b > 126) + return Base58.encode(Arrays.copyOf(encodedAddress, lastNonZeroIndex + 1)); + } + String address = new String(encodedAddress, StandardCharsets.ISO_8859_1); return address.replace("\0", ""); }