Информация об изменениях

Сообщение Re[4]: Найти конец C строки от 25.01.2024 12:02

Изменено 25.01.2024 12:05 TheBeginner

Re[4]: Найти конец C строки
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>UTF16 тоже в некотором абстрактном смысле multi-byte, только везде по 2.


Конечно. И нулевой байт (или байты для UTF32) появляются из-за фиксированного размера байт на символ. Они просто лишние.

PD>И первый нулевой байт вполне может быть. Байты инвертированы, то есть сначала младший, потом старший.

PD>Вот двух подряд нулевых байтов с четного адреса быть не может, это терминатор.

Есть и UTF-16BE и UTF-32BE с прямым порядком байт (Big Endian), но это не принципиально если UTF16/UTF32 строки обрабатываем отдельно, проверяя все 2 или 4 байта на ноль.

PD>А теперь представь себе TBCS,

PD>https://en.wikipedia.org/wiki/Double-byte_character_set#TBCS
PD>в которой всегда по 3 байта. И если байты тоже инвертированы, то тогда они выглядят так

Это как раз случай с фиксированным количеством байт на символ. И теоретически конечно может быть ноль в начале или в середине. Но я если честно не знаю где применяться такая кодировка.
Если взять кодировку с переменным количеством байт на символ (1-2 или 1-4?) то они похожи по логике на UTF8, где для кодирования символа используется 1-4 байта и нулевого байта в начале или середине быть не может.
Если ли исключения — вот это интересно было бы узнать.
Re[4]: Найти конец C строки
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>UTF16 тоже в некотором абстрактном смысле multi-byte, только везде по 2.


Конечно. И нулевой байт (или байты для UTF32) появляются из-за фиксированного размера байт на символ. Они просто лишние. (В UTF16 еще могут быть суррогатные пары, но это не имеет значения если просто искать конец строки)

PD>И первый нулевой байт вполне может быть. Байты инвертированы, то есть сначала младший, потом старший.

PD>Вот двух подряд нулевых байтов с четного адреса быть не может, это терминатор.

Есть и UTF-16BE и UTF-32BE с прямым порядком байт (Big Endian), но это не принципиально если UTF16/UTF32 строки обрабатываем отдельно, проверяя все 2 или 4 байта на ноль.

PD>А теперь представь себе TBCS,

PD>https://en.wikipedia.org/wiki/Double-byte_character_set#TBCS
PD>в которой всегда по 3 байта. И если байты тоже инвертированы, то тогда они выглядят так

Это как раз случай с фиксированным количеством байт на символ. И теоретически конечно может быть ноль в начале или в середине. Но я если честно не знаю где применяться такая кодировка.
Если взять кодировку с переменным количеством байт на символ (1-2 или 1-4?) то они похожи по логике на UTF8, где для кодирования символа используется 1-4 байта и нулевого байта в начале или середине быть не может.
Если ли исключения — вот это интересно было бы узнать.