2009-12-14 43 views
2

如何將布爾數組(或BitSet)轉換爲字符串,反之亦然。在java中將boolean []轉換爲String和viceversa

例子:

boolean[] ar = {true,false,false,false,false}; 
print(BitArrayToString(ar)); 

應該返回以下

10000 //binary 
16 //decimal 
10 //hex, prefered 

的otherway之一的周圍也應努力

ar = StringToBitArray(BitArrayToString(ar)); 

回答

3
long bitSetInt = 0; 
for (int i = 0 ; i < ar.length ; i++) { 
    bitSetInt = (bitSetInt | toDigit(ar[i])) << 1; 
} 
println(String.format("%x", bitSetInt)); 

其中

int toDigit(boolean b) { return b?1:0;} 

工作只要ar數組小於一個長的大小。使用http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html#syntax爲其他格式需要

+0

很好的解決方案,但我看不出怎麼辦相反,長尺寸的限制可能會成爲一個問題 – stimpie 2009-12-14 14:01:47

+0

因爲這冶煉像作業,我沒有提供完整的解決方案 - 只有一半。有一點想法 - 它很容易將一個數字轉換爲一個bools數組(並且是的,長度的大小限制確實是一個問題,但問題沒有規定最大大小......) – Chii 2009-12-14 14:11:37

+0

我已經解決了通過運行每個64位塊的代碼並對字符串進行協調來限制大小。感謝您的幫助 – stimpie 2009-12-14 14:34:25

2

嗯,你可以做這樣的事情:

StringBuilder builder = new StringBuilder(); 
for (int i = 0; i < array.length; i++) { 
    if (array[i]) builder.append("1"); else builder.append("0"); 
} 
return builder.toString(); 
+0

這可行,但使用更多的空間,然後使用十六進制解決方案。 – stimpie 2009-12-14 14:00:49