我有一个文件,其内容只有0和1
我想编写一个java程序,将每个8位的0和1转换为char 或者换句话说,将文件内容从二进制转换为字符。
我可以将此功能用于此目的吗?
答案 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()
轻松完成,并使用
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
。