目前我正在研究一种算法,将普通字符串中的每个字符编码成Base36字符串。
我尝试了以下方法,但没有成功。
public static String encode(String str) {
return new BigInteger(str, 16).toString(36);
}
我猜是因为该字符串不仅是十六进制字符串。如果我使用“Hello22334!”这个字符串在Base36中,那么会产生NumberFormatException。
我的做法是将每个字符转换为数字。将数字转换为十六进制表示,然后将十六进制字符串转换为Base36。
我的方法可行吗?是否有更简单或更好的方法?
BigInteger
如何结合在一起。你可能需要先将字符串转换为字节,然后再进行转换。请记住,字符串的字节表示取决于所使用的编码方式,如果没有提供编码方式,则会使用系统默认值(并且在不同系统上运行时可能会发生变化)。 - Thomasjava.util.Base64
是如何实现的,然后将其适应为基于36进制的编码。 - Thomas