но тип byte имеет диапазон [-128;127]. и что, если в исходной строке будет символ у которого код юникода больше 127-ми. как это все работает?
Так он тогда будет по два байта на символ просто
https://ru.stackoverflow.com/questions/493926/%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83-%D0%B2%D1%8B%D1%85%D0%BE%D0%B4%D0%B8%D1%82-128
т.е. латинский символ занимает 1байт, а кириллический- 2байта ? а при вызове getBytes() шестнадцатеричный юникод-код как-то превращается в число типа byte?
Не совсем, это зависит от того, в какой кодировке ты попытаешься получить байты Количество байт на символ зависит от кодировки, а не от языка Шестандцатиричный юникод потому так и называется, что 16 бит на символ А 16 бит - это два байта Если у тебя будет строчка из одной буквы и ты из нее получишь getBytes(), то длина массива будет 2, а не 1, потому что один символ представляется двумя байтами Можешь прямо сейчас в IDEA попробовать)
да. так и есть) еще момент. есть возможность выбрать UTF-8/16/16LE/16BE. в UTF-16 один кириллический символ занимает 4 байта, а в UTF-16LE/BE - 2байта. как так?
Один кириллический символ занимает 4 байта в UTF-16? Насколько мне известно, должно быть все таки по 2 байта, но я видимо могу ошибаться
будет массив байтов какие то символы займут один байт, какие то два. элемент массива из байтов не равен номеру элемента в строке.
Нет конечно же, это нарушает основной принцип кодирования
Обсуждают сегодня