2009-12-14 34 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

相关问题