Вопрос по character – Некоторые символы занимают больше байтов, чем другие?

4

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

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

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

@ TheTXI: Нет никаких доказательств того, что загрязнение пикселей приводит к потеплению в Интернете. Многие ученые даже не думают, что интернет-потепление реально. Я не собираюсь получать свои данные об окружающей среде от тех же самых чудаков, которые хотят использовать полностью натуральные пиксели конопли. Pesto
Вы можете использовать точку & quot;. & Quot; поскольку он использует наименьшее количество пикселей, кроме пробела. TheTXI
@TheTXI: Тогда почему бы не использовать вместо этого пробел? Зачем тратить пиксели на всех? Pesto
Песто: Вы просто еще один луддит, который не понимает, что мы разрушаем Интернет, загрязняя его ненужными пикселями. TheTXI
@samoz: игнорировать TheTXI. Он один из тех гайки окружающей среды, который постоянно говорит о том, что у него низкая площадь следа и нейтральность по отношению к пикселям. Там нет рассуждений с ними. Pesto

Ваш Ответ

4   ответа
-5

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

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

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

Почти все в этом ответе неверно.
@ Майкл Как что?
Например, уравнение символов и байтов, "1-байтовые символы называются символами ASCII", "вы не можете использовать этот 8-й бит". Я предлагаю вам прочитатьjoelonsoftware.com/articles/Unicode.html очень осторожно.
ОП не сказал, какой язык он использует; С-специфические ответы, которые даже не распознаются как таковые, - это не то, что ему нужно. Кстати, ваш ответ неверен и для C; стандарт C действительно предписывает, что 1 символ == 1 байт (и о, сколько страданий вызвал этот идиотизм), но он НЕ требует 8-битных байтов, и на самом деле существуют архитектуры, в которых байты имеют больше или меньше битов.
Самая важная вещь, которая является неправильной, состоит в том, что символы не являются байтами, и также нет смысла говорить, что символы "являются UTF-8". или "являются Unicode или широкими". Также персонажи не имеют длины. Вам нужно ENCODING для перевода символов в байты, и только тогда вы сможете говорить о длине и о том, какие символы поддерживает кодировка. И, конечно же, существуют кодировки, в которых символы, поддерживаемые ASCII, занимают более 1 байта.
15

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

In ASCII or ISO 8859, each character is represented by one byte In UTF-32, each character is represented by 4 bytes In UTF-8, each character uses between 1 and 4 bytes In ISO 2022, it's much more complicated

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

Символы US-ASCII занимают 1 байт в значительной степениany кодировка за исключением UTF-16 и UTF-32.
4

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

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

5

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

Похожие вопросы