【问题标题】:Translating a String containing a binary value to Hex将包含二进制值的字符串转换为十六进制
【发布时间】:2011-08-11 05:26:43
【问题描述】:

我正在尝试将包含二进制值(例如 000010001010011)的字符串转换为十六进制值。(453)

我一直在尝试几个选项,但大多数情况下我得到了每个单独字符的转换值。 (0=30 1=31)

我有一个函数,它通过非数学方式将我的输入转换为二进制代码,但通过一系列“if, else if”语句。 (这些值不计算,因为它们不是标准的。)二进制代码包含在变量字符串“binOutput”中

我目前有这样的事情:

        String bin = Integer.toHexString(Integer.parseInt(binOutput));

但这根本不起作用。

【问题讨论】:

  • 哇,你们真快!它有效!谢谢!但我还有 1 个问题......当数字更大时,它似乎不起作用。(例如“1011000010001010011101010110110011001000010011111”应该变成 16114EAD9909F)
  • 问题是该值不适合int。试试String bin = Long.toHexString(Long.parseLong(binOutput, 2)); 如果它变得太大,即使是很长(64 位),那么你将不得不将binOutput 分解成更小的字符串,并分别处理每个部分。
  • @Ted 谢谢!解决了这个问题。

标签: java string binary hex


【解决方案1】:

尝试使用Integer.parseInt(binOutput, 2) 而不是Integer.parseInt(binOutput)

【讨论】:

  • 好的答案,谢谢,如果我想将“00000001”输出为“01”,而不仅仅是“1”呢?
  • @RRTW - 你问的是逆问题:将整数值转换为字符串吗?这可以通过多种方式完成:Integer.toString()String.format 和其他一些方式。你的要求不清楚。你总是想要一个前导零吗?你总是想要至少两位数吗?还有什么?
  • 是的,我总是希望前导零 :-),作为您的提示,我将尝试使用 String.format 完成此操作,谢谢~
  • @RRTW - 如果您想将非负整数值格式化为带有前导零的二进制字符串,您可以简单地使用"0" + Integer.toString(value, 2)。 (这将为零生成“00”,因此您可能需要对这种情况进行特殊检查。)
【解决方案2】:

Ted Hopp 打败了我,但还是这样:

jcomeau@intrepid:/tmp$ cat test.java; java test 000010001010011
public class test {
 public static void main(String[] args) {
  for (int i = 0; i < args.length; i++) {
   System.out.println("The value of " + args[i] + " is " +
    Integer.toHexString(Integer.parseInt(args[i], 2)));
  }
 }
}
The value of 000010001010011 is 453

【讨论】:

    猜你喜欢
    • 2021-10-30
    • 2018-01-22
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 2018-06-16
    相关资源
    最近更新 更多