Как я могу отделить байт от символа?

1

Я получил массив байтов и содержит нормальное значение от -128 до 127, а также некоторые символы, такие как "O", "K", пробел.

Как я мог их разделить и распечатать в правильном формате? для значения, я печатаю значение, для символа я печатаю 'O', 'K' как строку?

  • 1
    Что если вы хотите получить значение, которое также является символом ASCII? (Например, значение 79, которое также является кодовой единицей UTF-16 для «O».) По сути, вы не должны смешивать двоичные данные с текстовыми данными без какого-либо способа сказать, какой именно ...
  • 0
    @JonSkeet вы правы, я тоже нашел эту проблему. но очень плохо, это то, что мне нужно решить.
Показать ещё 1 комментарий
Теги:

1 ответ

2
Лучший ответ

К сожалению, любая байтовая или любая байтовая комбинация может быть символом в зависимости от вашей кодировки символов. Вероятно, вы пытаетесь отделить человекочитаемые персонажи.

В этом случае хорошей кодировкой будет ISO_8859-1 (стандартная 1-байтовая кодировка):

byte[] array = ...; //this is your byte array
String string = new String(array, "ISO_8859-1"); //convert ALL the bytes to characters

Теперь вы можете использовать класс Character, чтобы проверить, какие у вас персонажи:

for(int i = 0; i < array.length; i++) {
    char ch = string.charAt(i);
    //now perform your tests on the character
    if(.../*character is good*/) System.out.println(ch);
    else /*character shouldn't be displayed*/ System.out.prinln(((int)ch));
}

Например, вы можете распечатать все символы, которые представляют собой правильные буквы:

if(Character.isLetter(ch)) ...

Я думаю, что это должно делать то, что вы намереваетесь делать, но очень сомнительно, почему вы это сделаете.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню