Преобразование двоичных данных в символы в Java - PullRequest
2 голосов
/ 26 декабря 2011

У меня есть файл, в котором его содержимое содержит только 0 и 1

Я хочу написать Java-программу, которая преобразует каждые 8 ​​бит 0 и 1 в char или другими словами, чтобы преобразовать содержимое файлаот двоичного к символам.

Какую функцию я могу использовать для этой цели?

Ответы [ 3 ]

6 голосов
/ 26 декабря 2011

Это тоже работа

    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);
2 голосов
/ 26 декабря 2011

Прежде всего, вам нужно преобразовать строки из 8 символов '0' и '1' в байты. Это легко сделать, используя Integer.parseInt(), и преобразовав int в байт, используя

byte b = (byte) (i & 0xFF)

Затем вам нужно создать байтовый массив со всеми этими байтами.

И, наконец, вам нужно преобразовать этот байтовый массив в строку. Здесь вам нужно решить, какую кодировку использовать. Одна и та же строка может быть преобразована в разные байтовые массивы в зависимости от кодировки. И все последовательности байтов не представляют допустимые символы. Предположим, вы хотите использовать ASCII в качестве кодировки, используйте new String(bytes, "ASCII"). Но учтите, что все байты больше 128 не являются действительными символами ASCII.

0 голосов
/ 26 декабря 2011

Если у вас уже есть содержимое файла в байтовом массиве byte[], вы можете просто использовать соответствующий конструктор String (byte [], Charset) .

Но учтите, что некоторыекодировки используют более одного байта на символ, поэтому вы, вероятно, не хотите использовать UTF-8, например, US-ASCII.

...