java中是否存在任何api來將簡單字符串轉換爲base36/base10,並將base36/base10轉換爲十六進制表示形式。Java將字符串文本轉換爲base36並將base36轉換爲十六進制
例如:input: '-22EEVX' encoding base36
輸出:的parseInt
f8 8d 33 23
java中是否存在任何api來將簡單字符串轉換爲base36/base10,並將base36/base10轉換爲十六進制表示形式。Java將字符串文本轉換爲base36並將base36轉換爲十六進制
例如:input: '-22EEVX' encoding base36
輸出:的parseInt
f8 8d 33 23
使用Integer
類和radix參數,並從同一個類toHexString
。
Integer.toHexString(Integer.parseInt("-22EEVX", 36));
對於base10它更短(省略基數參數,假設10
):
Integer.toHexString(Integer.parseInt("-22"));
如果你想在base36任何字符串編碼和解碼它可能對你有用。若要在基數10中使用它,請將以下代碼中的所有36替換爲10.
import java.math.BigInteger;
public class Base36 {
public static void main(String[] args) {
String str = convertHexToBase36(toHex("8978675cyrhrtgdxfawW#$#[email protected]$#"));
System.out.println(str);
String back = convertBase36ToHex(str);
System.out.println(fromHex(back));
}
public static String fromHex(String hex) {
StringBuilder output = new StringBuilder();
for (int i = 0; i < hex.length(); i += 2) {
String str = hex.substring(i, i + 2);
output.append((char) Integer.parseInt(str, 16));
}
return output.toString();
}
public static String convertHexToBase36(String hex) {
BigInteger big = new BigInteger(hex, 16);
StringBuilder sb = new StringBuilder(big.toString(36));
return sb.reverse().toString();
}
public static String convertBase36ToHex(String b36) {
StringBuilder sb = new StringBuilder(b36);
BigInteger base = new BigInteger(sb.reverse().toString(), 36);
return base.toString(16);
}
public static String toHex(String arg) {
return String.format("%040x", new BigInteger(1, arg.getBytes()));
}
}
沒有'base36 in hex'這樣的事情。你的意思是* from * base36 * to * hex? – EJP
是的@EJP,我在尋找字符串到base36,然後base36到十六進制 – subodh