2009-06-26 11 views
4

Ich bin nicht sehr erfahren mit niedriger Ebene Dinge wie HowMany Bytes ein Zeichen ist. Ich habe versucht herauszufinden, ob ein Zeichen gleich einem Byte ist, aber ohne Erfolg.Benötigen bestimmte Zeichen mehr Bytes als andere?

Ich muss ein Trennzeichen für Socket-Verbindungen zwischen einem Server und Clients festlegen. Dieser Begrenzer muss so klein wie möglich (in Bytes) sein, um die Bandbreite zu minimieren.

Das aktuelle Trennzeichen ist "#". Würde ein anderes Trennzeichen meine Bandbreite verringern?

+9

Sie könnten einen Punkt "." da es die wenigsten Pixel außer einem Leerzeichen verwendet. – TheTXI

+4

@TheTXI: Warum nicht stattdessen ein Leerzeichen verwenden? Warum Pixel überhaupt verschwenden? – Pesto

+0

Die Anzahl der verwendeten Pixel unterscheidet sich von der Bandbreite. Es geht ihm um die binären 1s und 0s, die über das Netzwerk gesendet werden. (Von dem, was ich verstehe) – samoz

Antwort

14

Es hängt davon ab, welche Zeichenkodierung Sie verwenden, um zwischen Zeichen und Bytes (die gar nicht das gleiche) zu übersetzen:

  • In ASCII oder ISO 8859, jedes Zeichen durch ein Byte dargestellt wird
  • In UTF-32, jedes Zeichen durch 4 Bytes
  • In UTF-8 dargestellt ist, jedes Zeichen verwendet zwischen 1 und 4 Bytes
  • In ISO 2022, es ist viel komplizierter

US-ASCII-Zeichen (von denen # eins ist) benötigen nur 1 Byte in UTF-8, was die beliebteste Codierung ist, die Multibyte-Zeichen zulässt.

+2

US-ASCII-Zeichen nehmen 1 Byte in fast * Any * -Kodierung mit Ausnahme von UTF-16 und UTF-32. – dan04

-4

Nein, alle Zeichen sind 1 Byte, es sei denn, Sie verwenden Unicode oder breite Zeichen (z. B. für Akzente und andere Symbole).

Ein Zeichen ist 1 Byte oder 8 Bit lang, was 256 mögliche Kombinationen ergibt, um Zeichen mit zu bilden. 1-Byte-Zeichen werden als ASCII-Zeichen bezeichnet. Sie verwenden nur 7 Bits (obwohl 8 verfügbar sind, aber dieses 8. Bit kann nicht verwendet werden), um das Standardalphabet und verschiedene Symbole zu bilden, die verwendet wurden, wenn Fernschreiber und Schreibmaschinen noch üblich waren.

Sie können eine ASCII-Diagramm finden und welche Zahlen entsprechen, welche Zeichen here.

+0

Fast alles in dieser Antwort ist falsch. –

+0

@Michael Wie was? – samoz

+1

Wie die Gleichung von Zeichen und Bytes, "1 Byte Zeichen werden ASCII-Zeichen genannt", "Sie können dieses 8. Bit nicht verwenden". Ich schlage vor, Sie lesen http://www.joelonsoftware.com/articles/Unicode.html sehr sorgfältig. –

5

Es ist auf der Codierung abhängt. In Ein-Byte-Zeichensätzen wie ANSI und den verschiedenen ISO8859-Zeichensätzen ist es ein Byte pro Zeichen. Einige Codierungen wie UTF8 haben eine variable Breite, wobei die Anzahl der zu codierenden Bytes von der zu codierenden Glyphe abhängt.

4

Die Antwort ist natürlich, dass es abhängt. Wenn Sie in einem reinen ASCII-env sind, dann ja, nimmt jedes char 1 Byte, aber wenn Sie in einem Unicode-env (alle von Windows zum Beispiel) sind, können Zeichen zwischen 1 und 4 Bytes groß sein.

Wenn Sie ein Zeichen aus dem ASCII-Satz auswählen, dann ist Ihr Begrenzer so klein wie möglich.