目前我正在使用一種算法將每個可能字符的普通字符串編碼爲Base36字符串。將字符串編碼爲Base36
我已經嘗試了以下,但它不起作用。
public static String encode(String str) {
return new BigInteger(str, 16).toString(36);
}
我想這是因爲字符串不只是一個十六進制字符串。如果我使用字符串「Hello22334!」在Base36中,我得到了一個NumberFormatException
。
我的方法是每一個字符轉換爲數字。將數字轉換爲十六進制表示,然後將十六進制字符串轉換爲Base36。
是我的做法正確的,或者是有一個更簡單的或更好的辦法?
我不明白怎麼「每個可能的字符」並且使用基數爲16的'BigInteger'應該放在一起。您可能需要先將字符串轉換爲字節並將其轉換。請記住,字符串的字節表示取決於使用的編碼,如果不提供編碼,系統將使用默認值(並且在不同系統上運行時可能會更改)。 – Thomas
我剛試過,它不起作用。問題是,我知道沒有可能的解決方案。 –
你可以看看如何實現'java.util.Base64',並將其調整到基數36. – Thomas