package com.github.linushp.wsblog.utils; import java.math.BigInteger; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; public class Base36 { private static final Charset CHAT_SET_UTF8 = StandardCharsets.UTF_8; public static String encode(byte[] inputBytes) { if (inputBytes == null || inputBytes.length == 0) { return ""; } BigInteger bigInteger = new BigInteger(inputBytes); String xx = bigInteger.toString(36); if (xx.charAt(0) == '-') { StringBuffer stringBuffer = new StringBuffer(xx); stringBuffer.setCharAt(0, 'f'); return stringBuffer.toString(); } else { return "z" + xx; } } public static String encode(String str) { if (str == null || str.isEmpty()) { return ""; } return encode(str.getBytes(CHAT_SET_UTF8)); } public static byte[] decode(String str) { if (str == null || str.isEmpty()) { return new byte[]{}; } String str1; if (str.charAt(0) == 'z') { str1 = str.substring(1); } else { str1 = "-" + str.substring(1); } BigInteger bigInteger = new BigInteger(str1, 36); return bigInteger.toByteArray(); } public static String decodeStr(String str) { if (str == null || str.isEmpty()){ return ""; } byte[] bytes1 = decode(str); return new String(bytes1, CHAT_SET_UTF8); } }