Java 将字符串文本转换为 base36 以及从 base36 转换为十六进制
Java convert String text to base36 and from base36 to hex
java 中是否有任何 api 将简单字符串转换为 base36/base10 并从 base36/base10 转换为十六进制表示。
示例:input: '-22EEVX' encoding base36
输出:f8 8d 33 23
使用 Integer
class 和 parseInt
的基数参数,以及来自相同 class 的 toHexString
。
Integer.toHexString(Integer.parseInt("-22EEVX", 36));
对于 base10,它甚至更短(您省略了基数参数,假设为 10
):
Integer.toHexString(Integer.parseInt("-22"));
它可能对你有用如果你想在 base36.To 中编码和解码任何字符串,请在基数 10 中使用它,将下面代码中的所有 36 替换为 10。
import java.math.BigInteger;
public class Base36 {
public static void main(String[] args) {
String str = convertHexToBase36(toHex("8978675cyrhrtgdxfawW#$#$@$#"));
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()));
}
}
java 中是否有任何 api 将简单字符串转换为 base36/base10 并从 base36/base10 转换为十六进制表示。
示例:input: '-22EEVX' encoding base36
输出:f8 8d 33 23
使用 Integer
class 和 parseInt
的基数参数,以及来自相同 class 的 toHexString
。
Integer.toHexString(Integer.parseInt("-22EEVX", 36));
对于 base10,它甚至更短(您省略了基数参数,假设为 10
):
Integer.toHexString(Integer.parseInt("-22"));
它可能对你有用如果你想在 base36.To 中编码和解码任何字符串,请在基数 10 中使用它,将下面代码中的所有 36 替换为 10。
import java.math.BigInteger;
public class Base36 {
public static void main(String[] args) {
String str = convertHexToBase36(toHex("8978675cyrhrtgdxfawW#$#$@$#"));
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()));
}
}