В Java, как интерпретировать байты строки UTF-8? - PullRequest
0 голосов
/ 28 ноября 2018

Тип Java byte подписан с областью действия от -128 до 127 (включительно).Какой это ужасный дизайн!

Теперь я хочу получить представление UTF-8 Java String.Как я понимаю, представление UTF-8 представляет собой последовательность байтов без знака (с областью от 0 до 255 включительно).Класс String в Java предоставляет следующий метод, который, по-видимому, может предоставить UTF-8 представление String:

byte[] getBytes(String charsetName)

Однако, как вы можете видеть, этот метод возвращаетмассив типа Java byte.Итак, как мне интерпретировать этот массив?

Например, если s - это String, а bArray - это возвращенный массив s.getBytes("UTF-8"), тогда:

  1. Если bArray[0] равен -100, то каков первый беззнаковый байт (в диапазоне от 0 до 255) этого представления UTF-8?

  2. Еслипервый беззнаковый байт (в диапазоне от 0 до 255) этого представления UTF-8 равен 200, а затем bArray[0]?

1 Ответ

0 голосов
/ 28 ноября 2018

От int до подписанного байта

int i = 200;                    // some value between 0 and 255
byte b = (byte) i;              // 8 bits representing that value

От подписанного байта до int

byte b = -100;                   // 8 bits representing a value between -128 and 127
int i = b & 0xFF;               // an int representing the value but in range [0..255]
...