将byte []转换为String

时间:2011-02-02 13:21:30

标签: java binary bytearray

是否有一种简单的方法可以将byte[]数组(零和1,基本上是每个位转换为ascii'1'或ascii'0')打印到控制台?

4 个答案:

答案 0 :(得分:7)

您可以通过将其数值转换为基数2来输出单个字节。以下是两种方法。在两者中,我将使用这个字节数组:

byte[] array = "HälLø123§$%".getBytes();

走数组

for(final byte b : array){
    System.out.print(Integer.toString(b & 0xFF /* thx Jason Day */, 2));
}

<强>输出:

  

10010001100001110100100110110010011001100001110111000110001011001001100110110000101010011110010001001010

<强>参考:

使用BigInteger

如果要整个阵列输出,请使用BigInteger

System.out.println(new BigInteger(array).toString(2));

<强>输出:

  

100100011000011101001000110110001001100110000111011100000110001001100100011001111000010101001110010010000100101

<强>参考:

答案 1 :(得分:3)

您可以使用commons-codec BinaryCodec

BinaryCodec.toAsciiString(array)

为了更好地控制输出,您可以使用toAsciiChars(..)并打印char[]

(如果您只想输出数组值 - java.util.Arrays.toString(array));

答案 2 :(得分:3)

如果要打印每个元素的二进制表示,可以执行以下操作:

StringBuilder sb = new StringBuilder();
sb.append("[");
String comma = "";
for (byte b : array) {
    int i = b & 0xFF; // cast to int and mask the sign bit
    sb.append(comma);
    comma = ",";
    sb.append(Integer.toBinaryString(i));
}
sb.append("]");

System.out.println(sb.toString());

答案 3 :(得分:2)

注意:这会输出单个字节,而不是单个位。但是因为它可能对某人有用,我会把它放在这里。


这是我理解问题的解决方案:

byte[] data = {0, 1, 0, 1, 1, 0};
StringBuilder sb = new StringBuilder(data.length);
for(byte b : data) {
    sb.append(b);
}
System.out.println(sb);

这应输出010110