Некоторые символы занимают больше байтов, чем другие? - PullRequest
4 голосов
/ 26 июня 2009

Я не очень разбираюсь в вещах более низкого уровня, таких как, сколько байтов у персонажа. Я попытался выяснить, равен ли один символ одному байту, но безуспешно.

Мне нужно установить разделитель, используемый для сокетных соединений между сервером и клиентами. Этот ограничитель должен быть как можно меньше (в байтах), чтобы минимизировать пропускную способность.

Текущий разделитель - "#". Может ли получение другого разделителя уменьшить мою пропускную способность?

Ответы [ 4 ]

15 голосов
/ 26 июня 2009

Это зависит от того, какую кодировку символов вы используете для перевода между символами и байтами (что совсем не одно и то же):

  • В ASCII или ISO 8859 каждый символ представлен одним байтом
  • В UTF-32 каждый символ представлен 4 байтами
  • В UTF-8 каждый символ использует от 1 до 4 байтов
  • В ISO 2022 все гораздо сложнее

Символы US-ASCII (из которых # равно одному) занимают всего 1 байт в UTF-8, который является наиболее популярной кодировкой, допускающей многобайтовые символы.

5 голосов
/ 26 июня 2009

Зависит от кодировки. В однобайтовых наборах символов, таких как ANSI и различных наборах символов ISO8859, это один байт на символ. Некоторые кодировки, такие как UTF8, имеют переменную ширину, где количество байтов для кодирования символа зависит от кодируемого глифа.

4 голосов
/ 26 июня 2009

Ответ, конечно, в том, что это зависит. Если вы используете чистую ASCII-среду, то да, каждый символ занимает 1 байт, но если вы используете Unicode-среду (например, для всех Windows), то символы могут иметь размер от 1 до 4 байт.

Если вы выбираете символ из набора ASCII, тогда да, ваш разделитель будет как можно меньше.

0 голосов
/ 26 июня 2009

Нет, все символы имеют длину 1 байт, если вы не используете Юникод или широкие символы (например, для ударений и других символов).

Символ имеет длину 1 байт или 8 бит, что дает 256 возможных комбинаций для формирования символов с помощью. 1-байтовые символы называются символами ASCII. Они используют только 7 бит (хотя 8 доступны, но вы не можете использовать этот 8-й бит), чтобы сформировать стандартный алфавит и различные символы, используемые, когда телетайпы и пишущие машинки все еще были распространены.

Здесь вы можете найти таблицу ASCII и какие цифры соответствуют каким символам .

...