суббота, 14 мая 2011 г.

В чём разница между Big Endian и Little Endian?

Это перевод What is the difference between Big Endian and Little Endian Unicode? Автор: Майкл Каплан.

Очень часто возникающий вопрос, который связан со значением суффиксов в UTF-16LE и UTF-16BE.

Это всё идёт от того, как работают процессоры (CPU). Когда вы смотрите на байт (вроде $41), то очень легко сказать, что это такое. Но если вы посмотрите на два байта подряд (вроде $41 $00), как если бы это было одно 16-битное слово, то вам надо решить, смотрите ли вы на число $4100 или на $0041.

Я всегда считал, что самое очевидное описание было дано в Hardcore Visual Basic от Bruce McKinney:
Endian ссылается на порядок, в котором хранятся байты. Этот термин взят из историй Путешествий Гулливера Джонатана Свифта, где были описаны войны между теми, кто разбивал яйца с тупого конца (Big End), и теми, кто настаивал на остром (Little End). С процессорами, как и с яйцами, не имеет значения, как вы это делаете, главное - знать, какой конец смотрит вверх.
В самом деле, очень важно знать, "какой конец старший". Это особенно интересно для UTF-16, которая, в конечном итоге, - просто набор WORD, которые соответствуют символам в Unicode. Разница между U+0041 ("A", a.k.a. LATIN CAPITAL LETTER A) и U+4100 ("䄀", a.k.a. иероглиф из CJK Extension A, который означает бедствия, катастрофы, зло или несчастье) весьма важна!

На платформах Windows, которые в массе своей little endian (букв.: "остроконечный"), UTF-16LE называется просто "Unicode", а UTF-16BE носит название "Unicode (Big Endian)". Это гораздо проще для (большинства) людей, которые не работают с кросс-платформенностью.

(Говоря честно, меня это не волнует - любой, достаточно умный, чтобы увидеть несогласованность в терминологии, достаточно умён, чтобы понимать, что не все так же умны, как и он, в этих вопросах)

This post brought to you by "䄀" (U+4100, a.k.a. иероглиф в CJK Extension A, который означает бедствия, катастрофы, зло или несчастье)

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.