Java将字符串文本转换为base36,并将base36转换为十六进制

Java将字符串文本转换为base36,并将base36转换为十六进制,java,encoding,hex,decoding,base36,Java,Encoding,Hex,Decoding,Base36,java中是否存在将简单字符串转换为base36/base10以及将base36/base10转换为十六进制表示的api 示例:input:'-22EEVX'编码base36 输出:f8 8d 33 23使用同一类的整数类和基数参数,以及tohextstring Integer.toHexString(Integer.parseInt("-22EEVX", 36)); 对于base10,它甚至更短(您省略了基数参数,假定它是10): 如果您想在base36中对任何字符串进行编码和解码,它可能对

java中是否存在将简单字符串转换为base36/base10以及将base36/base10转换为十六进制表示的api

示例:
input:'-22EEVX'编码base36

输出:
f8 8d 33 23
使用同一类的
整数
类和基数参数,以及
tohextstring

Integer.toHexString(Integer.parseInt("-22EEVX", 36));
对于base10,它甚至更短(您省略了基数参数,假定它是
10
):


如果您想在base36中对任何字符串进行编码和解码,它可能对您很有用。若要在Base10中使用它,请将下面代码中的所有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()));
}
}
import java.math.biginger;
公共课基地36{
公共静态void main(字符串[]args){
字符串str=convertHexToBase36(toHex(“8978675cyrhrtgdxfawW#$#$@$#”);
系统输出打印项次(str);
字符串返回=convertBase36ToHex(str);
System.out.println(fromHex(back));
}
公共静态字符串fromHex(字符串十六进制){
StringBuilder输出=新的StringBuilder();
对于(int i=0;i
没有“十六进制中的base36”这样的东西。你的意思是从base36到hex吗?是的@EJP,我正在寻找字符串到base36,然后是base36到hexThank,@krzyk,但它给出了
Integer.toHexString(Integer.parseInt(“-22EEVX”)
作为java.lang.NumberFormatException:@subodh的错误,因为您使用了base10的版本来解析base36字符串。用
36
使用第一个代码片段,非常感谢这个最简单的方法,如果我需要返回实际字符串,是否仍存在如上所述的字符串,或者我需要转换字节字节?你知道如何从上面的字符串中获取实际字符串吗?你说从上面的字符串是什么意思?从
到hextstring
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()));
}
}