2014-11-15 2 views
-1

У меня есть "" двоичная "" строка String s1 = "10011000" и вы хотите напечатать соответствующий символ (Ф) этого байта, как я могу это сделать?Двоичная строка (11110010) для char - Java

Я читал и тестировал так много решений и учебных пособий ... и не могу найти именно то, что хочу! Более того, я думаю, что проблема связана с кодировкой.

Например, этот код не работает, но почему (у меня есть «?» На выходе, поэтому проблема с кодировкой?)?

int j = Integer.parseInt("10011000", 2);  
System.out.println(new Character ((char)j)); 
+1

Знаете ли вы, что такое десятичная форма 10011000? Также каково значение ascii этого десятичного числа? Итак, каковы ваши требования и ожидания? – SMA

+0

'?' - это представление символа в вашей консоли. Просто попробуйте другую битовую строку или итерацию корыта. – Hannes

+0

Возможный дубликат [Преобразование двоичных данных в символы в java] (http://stackoverflow.com/questions/8634527/converting-binary-data-to-characters-in-java) –

ответ

1

10011000 является точкой 152 юникода кода, который представляет собой расширенный Юникод символ, который будет отображаться только если его кодировка поддерживается консолью

+0

Humm .. Ok , поэтому они не являются решениями, когда я создаю System.out.println, отображаю этот «специальные символы»? – night

+0

Символ, который вы пытаетесь отобразить, не отображается на консоли Eclipse. Правильная кодовая точка Юникода для персонажа, которого вы ищете, - '1060' или' 10000100100', как указано в ответе @Mariusz Nosiński :) – Reimeus

+0

На самом деле, у меня есть проект, где я должен разбирать случайную двоичную строку (из 8 бит, Byte per String) к строке с соответствующим символом каждой строки. И некоторый символ не отображается как настоящий персонаж, поэтому он блокирует следующий. – night

0

Вы использовали неправильный код. Если вы хотите увидеть на выходе Ф вам необходимо изменить свой код в это:

int j = Integer.parseInt("10000100100", 2); 
System.out.println((char) j); 
+0

У меня всегда есть?? в выводе! На самом деле, у меня есть проект, где я должен разбирать случайную двоичную строку (из 8 бит, так что один байт на строку) в строку с соответствующим символом каждой строки. – night

1

Ф символа является кириллической буквой капитала; в Unicode шестнадцатеричное значение равно \ u0424. Бинарная строка, которую вы пытаетесь проанализировать, равна 152 десятичной. Бинарная строка для \ u0424 равна 010000100100 (1060 десятичных знаков), и поэтому я исправлю это в первую очередь. И, как отмечали другие, до тех пор, пока набор символов среды не будет поддерживать выход Unicode, Java заменит «?» символ для любого символа, который не поддерживает текущий набор символов. См. Unicode characters in Eclipse для настройки консоли Eclipse на Unicode.

Смежные вопросы