Несколько лет назад я написал довольно длинную статью в http://www.hackcraft.net/xmlUnicode/#sect4, в которой более подробно говорится следующее, но:
>
- это персонаж.Это чисто концептуальный предмет, который мы понимаем как имеющий одно или несколько значений, способов использования и способов его написания в зависимости от различных языковых и текстовых контекстов.Это абстрактное понятие, а не что-либо, что мы действительно можем использовать в компьютере.
U+003E
(который в C # представлен как \u003E
) - это кодовая точка.Это способ присвоения номера персонажу, но это все же довольно абстрактная вещь.Число 0x3E
(62) по-прежнему является абстрактным понятием, а не тем, что мы можем использовать в компьютере.
00111110
, 0000000000111110
, 0011111000000000
, 00000000000000000000000000111110
и 00111110000000000000000000000000
- все эторазличные способы, обычно используемые для представления той кодовой точки в фактических единицах и единицах, которые компьютеры могут представлять импульсами электрического заряда.
Между ними, как программисты, мы склонны рассматривать эти три как 0x3E
, 0x003E
или 0x000000003E
, которые являются числами, сопоставленными с типами данных, которые мы фактически используем.Разница между 0000000000111110
и 0011111000000000
в этом заключается в том, что в них есть порядок байтов, и в основном мы не думаем об этом на данный момент, уже подумав (если необходимо), что «должны убедиться, что порядок байтов правильный», потому что это »если необходимо, это обычно происходит на уровне, когда никто вообще не думает о символах.
На самом деле, как программисты, мы склонны думать об этом в основном как о >
, с которого мы начали.Абстракции великолепны.
Ваш код, который использует UTF-8, использует один из различных способов превращения символов в байты, тот, который превращает U + 003E в 0x3E.Есть и другие, хотя UTF-8 является наиболее полезным для большинства обменов.Следовательно, это один из правильных ответов на «полные байты для«> ».Байт 0x00, за которым следует 0x3E, и байт 0x3E, за которым следует 0x00, будут двумя другими правильными ответами, обе формы UTF-16 с различным порядком байтов.Последовательности байтов 0x00, 0x00, 0x00, 0x3E и 0x3E, 0x00, 0x00, 0x00 будут правильными. UTF-32.
Если у вас есть причина для того, чтобы захотеть конкретный из них, используйте соответствующую кодировку.Если вы сомневаетесь, используйте UTF-8, как вы это делали.