将二进制数据转换为java中的字符

时间:2011-12-26 09:40:08

标签: java binary char

我有一个文件,其内容只有0和1

我想编写一个java程序,将每个8位的0和1转换为char 或者换句话说,将文件内容从二进制转换为字符。

我可以将此功能用于此目的吗?

3 个答案:

答案 0 :(得分:6)

这个也是工作

    String s = "0110100001100101011011000110110001101111";
    String str = "";

    for (int i = 0; i < s.length()/8; i++) {

        int a = Integer.parseInt(s.substring(8*i,(i+1)*8),2);
        str += (char)(a);
    }

    System.out.println(str);

答案 1 :(得分:2)

首先,您必须将8'0'和'1'字符的字符串转换为字节。这可以使用Integer.parseInt()轻松完成,并使用

将int转换为字节
byte b = (byte) (i & 0xFF)

然后你需要创建一个包含所有这些字节的字节数组。

最后,您需要将此字节数组转换为String。这是您需要决定使用哪种编码的地方。根据编码,可以将相同的String转换为不同的字节数组。并且所有字节序列都不代表有效字符。假设您要使用ASCII作为编码,请使用new String(bytes, "ASCII")。但请注意,大于128的所有字节都不是有效的ASCII字符。

答案 2 :(得分:0)

如果您已经在字节数组byte[]中拥有文件内容,则可以使用相应的constructor String(byte[], Charset)

但请注意,某些字符集每个字符使用多个字节,因此您可能不想使用UTF-8,例如US-ASCII