2011-04-22 101 views
7

我试图把这种包含一个二进制值的字符串(例如000010001010011)的字符串到它的十六进制值(453)翻译包含二进制值,以十六进制

我一直想几个选项,但大多我得到每个角色的转换值。 (0 = 30 1 = 31)

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

我现在有这样的事情:

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

但是,这并不工作所有。

+0

哇,哟家伙快!它的工作原理!谢谢!但是我还有1个问题...当数字越大似乎不起作用(例如“1011000010001010011101010110110011001000010011111”应该变成16114EAD9909F) – Yuri 2011-04-23 06:33:24

+0

问题是该值不适合'int'。尝试'String bin = Long.toHexString(Long.parseLong(binOutput,2));'如果它变得太长,甚至很长(64位),那么你将不得不将'binOutput'分解成更小的字符串,分别做每件。 – 2011-04-24 01:16:13

+0

@特谢谢!解决了这个问题。 – Yuri 2011-04-24 08:09:35

回答

17

尝试使用的Integer.parseInt(binOutput, 2)代替Integer.parseInt(binOutput)

+0

好的答案,谢谢,以及如果我想将“00000001”输出为“01”,而不仅仅是“1”,该怎么办? – RRTW 2013-10-18 03:38:11

+0

@RRTW - 您是否在问反向问题:将整数值转换为字符串?这可以通过多种方式完成:'Integer.toString()','String.format'和其他一些。您的要求不明确。你总是想要一个领先的零?你总是需要至少两位数字吗?还有别的吗? – 2013-10-18 04:09:37

+0

是的,我想要领先的零总是:-),作为你的提示,我会尝试使用String.format做到这一点,谢谢〜 – RRTW 2013-10-18 04:12:11

2

泰德·霍普打我给它,但在这里不用反正:

[email protected]:/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