您好 我正在尝试编写一个程序,将用户输入的二进制文件转换为一串文本。我遇到了各种障碍,我可以让我的程序将“01110110”转换为“v”但是一旦我尝试了类似“0110100001101001”的东西,它就会给我符号而不是“hi”这个词。以下是我正在使用的源代码。 P.s感谢您帮助我们继续尝试掌握Java。
import javax.swing.JOptionPane;
public class Binarytotext
{
public static void main(String arg[])
{
String b = JOptionPane.showInputDialog(null,"Enter binary");
int charCode = Integer.parseInt(b,2);
String k = new Character((char)charCode).toString();
JOptionPane.showMessageDialog(null,k);
}
}
答案 0 :(得分:3)
您正在将16 0和1的整个序列转换为单个整数。您需要先将其拆分为8个字符的子串(每个8位是一个字节,每个字节是一个ASCII字符)。
答案 1 :(得分:1)
如果你的字符串中有超过8位,你需要将其分解并分别解析每个8位段,如:
int charCode;
String k = "";
String b = JOptionPane.showInputDialog(null,"Enter binary");
while (b.length > 8) {
charCode = Integer.parseInt(b.substring(0, 8),2);
k += new Character((char)charCode).toString();
b = b.substring(8);
}
if (b.length() > 0) {
//attempt handle any trailing bits that might be left
charCode = Integer.parseInt(b,2);
k += new Character((char)charCode).toString();
}
JOptionPane.showMessageDialog(null,k);
答案 2 :(得分:0)
String input = JOptionPane.showInputDialog(null, "Enter binary");
String out = "";
while (input.length() >= 8) {
out += (char) Integer.parseInt(input.substring(0, 8), 2);
input = input.substring(8);
}
JOptionPane.showMessageDialog(null, out);