У меня есть символ '?'. Значение Юникода равно U + 1F62D , двоичный эквивалент - 11111011000101101 . Теперь я хочу преобразовать этот символ в байтовый массив. Мои шаги
1) Поскольку двоичное представление больше 2 байтов, я использую 4 байта
XXXXXXXX XXXXXXX1 11110110 00101101
2) Теперь я заменяю все «X» на «0»
00000000 00000001 11110110 00101101
3) Десятичные эквиваленты
00000000 (0) 00000001 (1) 11110110 (-10) 00101101 (45)
Это мой код
@Test
public void testUtf16With4Bytes() throws Exception {
assertThat(
new String(
new byte[]{0,1,-10,45},
StandardCharsets.UTF_16BE
),
is("?")
);
}
Это вывод
ava.lang.AssertionError:
Expected: is "?"
but: was ""
Что я пропустил?