【问题标题】:Java convert String text to base36 and from base36 to hexJava将字符串文本转换为base36,从base36转换为十六进制
【发布时间】:2016-10-12 03:50:48
【问题描述】:

java中是否有任何api可以将简单字符串转换为base36/base10以及从base36/base10转换为十六进制表示。

示例:input: '-22EEVX' encoding base36 输出:f8 8d 33 23

【问题讨论】:

  • 没有'base36 in hex'这样的东西。你的意思是 from base36 to hex?
  • 是的@EJP,我正在寻找base36的字符串,然后是base36到hex

标签: java encoding hex decoding base36


【解决方案1】:

使用Integer 类和parseInt 的基数参数,以及来自同一类的toHexString

Integer.toHexString(Integer.parseInt("-22EEVX", 36));

base10 更短(省略基数参数,假设为10):

Integer.toHexString(Integer.parseInt("-22"));

【讨论】:

  • 谢谢,@krzyk 但它给Integer.toHexString(Integer.parseInt("-22EEVX")) 提供了错误 java.lang.NumberFormatException:
  • @subodh 因为您使用带有 base10 的版本来解析 base36 字符串。使用带有36的第一个代码片段
  • 非常感谢这种最简单的方法,如果我需要返回到实际的字符串,是否存在如上所述的或者我需要转换字节字节?
  • 你知道如何从上面的字符串中获取实际的字符串吗?
  • 上面的字符串是什么意思?你从toHexString得到一个字符串
【解决方案2】:

如果您希望任何字符串在 base36 中编码和解码,它可能对您有用。要在 base 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()));
}
}

【讨论】:

    猜你喜欢
    • 2015-09-04
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 2014-12-25
    • 2015-12-24
    相关资源
    最近更新 更多