2011-04-22 105 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