Някои символи отнемат ли повече байтове от други?

Нямам много опит с неща от по-ниско ниво, като например колко байта е един символ. Опитах се да разбера дали един знак е равен на един байт, но без успех.

Трябва да задам разделител, използван за връзки на сокет между сървър и клиенти. Този разделител трябва да бъде възможно най-малък (в байтове), за да се минимизира честотната лента.

Текущият разделител е "#". Получаването на друг разделител ще намали ли моята честотна лента?


person Tom    schedule 26.06.2009    source източник
comment
Можете да използвате точка. тъй като използва най-малко пиксели, различни от празно пространство.   -  person TheTXI    schedule 26.06.2009
comment
@TheTXI: Тогава защо не използвате интервал вместо това? Защо изобщо да хабим пиксели?   -  person Pesto    schedule 26.06.2009
comment
Количеството използвани пиксели е различно от честотната лента. Той е загрижен за двоичните 1 и 0, които се изпращат по мрежата. (доколкото разбирам)   -  person samoz    schedule 26.06.2009
comment
samoz: Мисля, че трябва да намалим режийните си разходи във възможно най-много арени.   -  person TheTXI    schedule 26.06.2009
comment
@samoz: Игнорирайте TheTXI. Той е един от онези екологични луди, които винаги говорят за това, че имат нисък пикселен отпечатък и са неутрални към пикселите. С тях няма разсъждения.   -  person Pesto    schedule 26.06.2009
comment
Песто: Ти си просто поредният лудит, който не осъзнава, че унищожаваме интернет, като го замърсяваме с ненужни пиксели.   -  person TheTXI    schedule 26.06.2009
comment
@TheTXI: Няма доказателство, че замърсяването на пикселите води до интернет затопляне. Много учени дори не смятат, че интернет затоплянето е реално. Няма да получа данните си за околната среда от същите маниаци, които искат да използват изцяло естествени конопени пиксели.   -  person Pesto    schedule 26.06.2009
comment
Песто: Вижте, ето ви отново. Вие сте повече от щастливи да използвате базираните на петрол обработени пиксели, които не само отнемат много повече ценни ресурси, за да бъдат произведени, но и миришат на горяща пластмаса, вместо на изцяло естествено растение-чудо? Производството на конопени пиксели струва малка част от цената и е напълно устойчив ресурс. Не, пушенето на тези пиксели няма да ви причини шум, а само главоболие.   -  person TheTXI    schedule 26.06.2009
comment
@TheTXI @Pesto Хора, шегувате ли се или сериозно? Не мога да разбера сарказма...   -  person samoz    schedule 26.06.2009
comment
@samoz: Много ме натъжаваш. Надявам се, че за първи път сте в интернет.   -  person GEOCHET    schedule 26.06.2009
comment
@TheTXI: Първо, случайно се наслаждавам на миризмата на горяща пластмаса. Напомня ми за детски посещения в Ню Джърси. Второ, всъщност не вярвам, че трябва да се придържаме към петролните пиксели. Аз съм голям привърженик на ядрените пиксели. Знаете ли, че пикселите идват от електрони, които се оказват страничен продукт на ядрено делене? Копнея за деня, когато всеки има ядрен реактор под бюрото, така че да може да използва разширен ASCII символ 219, колкото иска, без да се страхува от вас, хипитата, които ги хвърляте с червена боя.   -  person Pesto    schedule 26.06.2009
comment
Песто: Знаете ли какво също е страничен продукт от производството на ядрени пиксели? Ядрени пикселни отпадъци? Знаете ли какво правим с тези отпадъци? Съхраняваме го в големи варели, които изтичат и ще разлеят всички тези отпадъци в нашите потоци от битове и нашите файлови потоци. Виждали ли сте някога типа мутирали буболечки, които измъчват нашите някога девствени местообитания? Ти наистина си бездушен програмист.   -  person TheTXI    schedule 26.06.2009
comment
Рич Б: Е, тогава по-добре започнете да мислите повече за вашата среда за разработка, или цялото това пикселно замърсяване ще доведе до възможно изчезване на понита.   -  person TheTXI    schedule 26.06.2009
comment
@TheTXI: :( Ти, чудовище. Върни си го!   -  person GEOCHET    schedule 26.06.2009
comment
@TheTXI: Очевидно има нужда от по-добри кофи за битове, но бихте изхвърлили бебето заедно с водата за баня. Нека приложим малко критично мислене към вашето конопено решение. Целият този коноп ще изисква огромно количество тор. Въпреки че в интернет има много глупости (като вашите луди изказвания), важно е да се отбележи, че тези глупости изискват пиксели. Това е безкраен цикъл: повече пиксели се нуждаят от повече глупости, които се нуждаят от още повече пиксели и т.н. И това дори не влиза в необходимото количество земеделска земя. Какво ще направим, да изравним WV и да го превърнем във ферма за коноп?   -  person Pesto    schedule 26.06.2009
comment
Rich B: Истината боли и няма да я върна обратно. Трябва да отворите очите си за щетите, които цялото това излишно използване на пиксели причинява на света на разработката на софтуер. Това наистина е кръстоносен поход и единственият начин той да бъде победен е чрез огромен брой тъмнокожи хора, които не споделят вашите вярвания.   -  person TheTXI    schedule 26.06.2009
comment
Pesto: WV вече е национален лидер в производството на марихуана, така че е очевидно, че нашата среда е много подходяща за промишлено производство на коноп.   -  person TheTXI    schedule 26.06.2009


Отговори (4)


Зависи какво кодиране на знаци използвате за превод между знаци и байтове (които изобщо не са едно и също нещо):

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

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

person Michael Borgwardt    schedule 26.06.2009
comment
US-ASCII знаците заемат 1 байт в почти всяко кодиране с изключение на UTF-16 и UTF-32. - person dan04; 21.08.2010

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

person ConcernedOfTunbridgeWells    schedule 26.06.2009

Отговорът разбира се е, че зависи. Ако сте в чист ASCII env, тогава да, всеки знак отнема 1 байт, но ако сте в Unicode env (всички Windows например), тогава символите могат да варират от 1 до 4 байта по размер.

Ако изберете char от ASCII набора, тогава да, вашият разделител е възможно най-малък.

person Scott Weinstein    schedule 26.06.2009

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

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

Можете да намерите ASCII диаграма и кои числа отговарят на кои знаци тук.

person samoz    schedule 26.06.2009
comment
Като уравнението на знаци и байтове, знаците от 1 байт се наричат ​​ASCII знаци, не можете да използвате този 8-ми бит. Предлагам ви да прочетете joelonsoftware.com/articles/Unicode.html много внимателно. - person Michael Borgwardt; 26.06.2009
comment
Току-що прочетох статията, която ми изпратихте, и все още не разбирам как категорично греша. Той все още може да изпраща ASCII символи (дори ако са UTF-8) в 1 байт. И след като се замислих, коментарът "не мога да използвам 8-ми бит" беше грешен, просто щеше да се нуждае от допълнителна обработка, за да премахне 8-ия битов сигнал, който той изпращаше. - person samoz; 26.06.2009
comment
Най-важното нещо, което не е наред, е, че знаците не са байтове и също така няма смисъл да се казва, че знаците са UTF-8 или са Unicode или широки. Нито знаците имат дължина. Имате нужда от КОДИРОВКА, за да преведете символите в байтове и едва тогава можете да говорите за дължина и кои знаци поддържа кодирането. И със сигурност има кодировки, в които знаците, поддържани от ASCII, заемат повече от 1 байт. - person Michael Borgwardt; 26.06.2009
comment
Говоря за това, когато пишете: char c, получавате 1 байт, разпределен за вас. OP попита дали може да използва нещо по-малко, на което отговорът е не, защото байтът е най-малкото нещо, което можете да разпределите. По характер говоря за типа char, а не за истинска буква. С по-големи символи говоря за типа wchar. - person samoz; 26.06.2009
comment
ОП не каза какъв език използва; Специфичните за С отговори, които дори не са разпознати като такива, не са това, от което той се нуждае. BTW, отговорът ви е грешен и за C; стандартът C наистина изисква 1 char == 1 байт (и о, колко страдания е причинил този идиотизъм), но НЕ изисква 8-битови байтове и всъщност има архитектури, където байтовете имат повече или по-малко битове. - person Michael Borgwardt; 26.06.2009