2009-06-26 9 views
4

私はキャラクターがどのくらいのバイト数のような低レベルのものではあまり経験がありません。私は1文字が1バイトに等しいかどうかを調べることを試みたが、成功しなかった。特定の文字は他の文字より多くのバイトを取るか?

サーバーとクライアント間のソケット接続に使用される区切り文字を設定する必要があります。この区切り文字は、帯域幅を最小限にするために、できるだけ小さく(バイト単位で)なければなりません。

現在の区切り文字は "#"です。他のデリミタを使用すると帯域幅が減少しますか?

+9

ピリオド「。」を使用できます。それは空白以外の最小のピクセルを使用するからです。 – TheTXI

+4

@TheTXI:代わりにスペースを使わないのはなぜですか?なぜピクセルを無駄にするのか? – Pesto

+0

使用されるピクセルの量は帯域幅とは異なります。彼はバイナリ1と0がネットワークを介して送信されることに懸念しています。 (私が理解したところから) – samoz

答えて

14

それはあなたが(すべて同じものではありません)文字とバイト間の変換に使用するものの文字エンコーディングに依存します:

ASCIIまたはISO 8859で
  • 、各文字が1バイトで表現される
  • UTF-32では
  • 、各文字が4バイトUTF-8で
  • で表され、各文字はISO 2022年
  • バイト1〜4、それははるかに複雑だ使用

US-ASCII文字(1つの文字)は、マルチバイト文字を許可する最も一般的なエンコードであるUTF-8で1バイトしか使用できません。

+2

US-ASCII文字は、UTF-16とUTF-32を除き、ほとんどすべての*エンコーディングで1バイトをとります。 – dan04

-4

いいえ、すべての文字は、Unicodeまたはワイド文字を使用していない限り(アクセント記号やその他の記号など)、1バイトです。

文字は1バイトまたは8ビットであり、256文字で文字を形成する可能性があります。 1バイト文字はASCII文字と呼ばれます。テレタイプとタイプライターがまだ一般的であったときに使用される標準アルファベットとさまざまな記号を形成するために、7ビット(8ビットは使用できますが、この8ビットは使用できません)を使用します。

あなたはASCIIチャートを見つけることができますし、何の数字は、それがエンコーディングに依存してどのような文字here.

+0

この応答のほとんどすべてが間違っています。 –

+0

@Michael何のように? – samoz

+1

文字とバイトの式のように、「1バイト文字はASCII文字」、「この8番目のビットは使用できません」など。私はあなたが非常に注意深くhttp://www.joelonsoftware.com/articles/Unicode.htmlを読むことを提案する。 –

5

に対応しています。 ANSIやさまざまなISO8859文字セットなどのシングルバイト文字セットでは、1文字あたり1バイトです。 UTF8などの一部のエンコーディングは、可変幅です。文字をエンコードするバイト数は、エンコードされるグリフに依存します。

4

答えはもちろんそれに依存します。あなたが純粋なASCII envであれば、すべてのcharは1バイトをとりますが、Unicodeのenv(Windowsのすべて)の場合、charのサイズは1から4バイトです。

ASCIIセットからcharを選択した場合、可能な限り、その区切り文字は小さくなります。

関連する問題