Двоичные к строковым проблемам - PullRequest
0 голосов
/ 28 марта 2011

Привет Я пытаюсь написать программу, которая покрывает двоичный файл, введенный пользователем в строку текста. Я наткнулся на контрольно-пропускной пункт, я могу заставить свою программу конвертировать "01110110" в "v", но как только я попробую что-то вроде "0110100001101001", он даст мне символы вместо слова "привет". Ниже приведен исходный код, который я использую. Спасибо за вашу помощь, все еще пытаясь понять 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);

    }

}

Ответы [ 3 ]

3 голосов
/ 28 марта 2011

Вы преобразуете всю последовательность из 16 0 и 1 в одно целое число. Сначала необходимо разбить его на 8 символьных подстрок (каждые 8 ​​бит - один байт, а каждый байт - один символ ASCII).

1 голос
/ 28 марта 2011

Если в вашей строке более 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);
0 голосов
/ 28 марта 2011
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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...