2015-04-15 200 views
1

好吧,所以我想將一個十六進制字符串轉換爲二進制字符串,以便我可以做一些掉期和下行等下行,我遇到了我認爲這裏的答案Convert hex string to binary string但這造成了一些問題。將十六進制字符串轉換爲二進制字符串 - Java

String hexToBinary(String hexadecimalString) { 
    int i = Integer.parseInt(hexadecimalString, 16); 
    String binaryString = Integer.toBinaryString(i); 
    return binaryString; 
} 

但是,例如,如果我傳遞了十六進制字符串「03」它只會返回一個二進制字符串「11」。或者如果我要傳入十六進制字符串「41」,它會返回一個二進制字符串「1000001」。 我該如何使它始終返回長度爲8位的二進制字符串? 所有幫助提前非常感謝:)

試過你的填充二進制字符串的建議,但它沒有工作,這是我試過,你能看到我做了什麼錯?

String hexToBinary(String hexString) { 
    int i = Integer.parseInt(hexString, 16); 
    String binaryString = Integer.toBinaryString(i); 
    String padded = String.format("%8s", binaryString.replace(' ', '0')); 
    return padded; 
} 
+0

檢查這一點。 http://stackoverflow.com/questions/9246326/convert-hexadecimal-string-hex-to-a-binary-string – Imran

+1

你只需要用零填充直到你的字符串長8個字符 – JonK

+1

'replace() '必須對'String.format()'的結果調用''不在'binrayString'上。 – SubOptimal

回答

1

使用String.format

試試這個:

String.format("%8s", Integer.toBinaryString(i)).replace(' ', '0') 
+0

嗨Iswanto,我試過你的建議,但它仍然返回相同的字符串沒有填充? – lifeisaloop

+1

@lifeisaloop那麼你一定做錯了什麼。舉例說明是正確的。對於41,它返回'00101001'。 – SubOptimal

+0

是的,再次看了一下,我誤打錯了。謝謝大家幫助! – lifeisaloop

0

了許多其他的解決方案,這可能是一個。

StringBuilder sb = new StringBuilder(); 
String binaryString = Integer.toBinaryString(41); 
for (int i = binaryString.length(); i < 8; i++) { 
    sb.append('0'); 
} 
sb.append(binaryString); 
System.out.println(sb.toString()); 

或這一個

StringBuilder sb = new StringBuilder("00000000"); 
sb.append(Integer.toBinaryString(41)); 
System.out.println(sb.substring(sb.length()-8)); 

或甚至這一個

String s = "00000000" + Integer.toBinaryString(41); 
System.out.println(s.substring(s.length()-8)); 
0
String hexToBinary(String hexadecimalString) { 
int i = Integer.parseInt(hexadecimalString, 16); 
String binaryString = Integer.toBinaryString(i); 
while (binaryString .length() < 8) { 
     binaryString = "0" + binaryString ; 
    } 
return binaryString; 
} 

在串直到binaryString的長度的開始添加0是8

相關問題