388 Stimmen

Was ist der Unterschied zwischen einem String und einem Byte-String?

Ich arbeite mit einer Bibliothek, die einen "Byte-String" zurückgibt ( bytes ) und ich muss diese in eine Zeichenkette umwandeln.

Gibt es eigentlich einen Unterschied zwischen diesen beiden Dingen? Wie hängen sie zusammen, und wie kann ich die Umrechnung vornehmen?

4voto

Gordon Shephard Punkte 77

Unicode ist ein vereinbartes Format für die binäre Darstellung von Zeichen und verschiedenen Arten der Formatierung (z. B. Klein-/Großschreibung, Zeilenumbruch und Wagenrücklauf) und anderen "Dingen" (z. B., Emojis ). Ein Computer ist nicht weniger in der Lage, eine Unicode-Darstellung (eine Reihe von Bits) zu speichern, sei es im Speicher oder in einer Datei, als er eine ASCII Darstellung (eine andere Reihe von Bits) oder eine andere Darstellung (Reihe von Bits).

Para Kommunikation müssen sich die Kommunikationspartner über die Art der Vertretung einigen.

Da Unicode darauf abzielt, Folgendes darzustellen todos der möglichen Zeichen (und anderer "Dinge"), die in der Kommunikation zwischen Menschen und Computern verwendet werden, erfordert es eine größere Anzahl von Bits für die Darstellung vieler Zeichen (oder Dinge) als andere Darstellungssysteme, die versuchen, eine begrenztere Anzahl von Zeichen/Dingen darzustellen. Zur "Vereinfachung" und vielleicht auch, um dem historischen Gebrauch Rechnung zu tragen, wird die Unicode-Darstellung fast ausschließlich in ein anderes Darstellungssystem (z. B. ASCII) umgewandelt, um Zeichen in Dateien zu speichern.

Es ist nicht der Fall, dass Unicode kann nicht für die Speicherung von Zeichen in Dateien oder deren Übermittlung über jede Kommunikationskanal. Es ist einfach so, dass es est nicht.

Der Begriff "String" ist nicht genau definiert. Im allgemeinen Sprachgebrauch bezieht sich "String" auf eine Reihe von Zeichen/Dingen. In einem Computer können diese Zeichen in einer von vielen verschiedenen Bit-für-Bit-Darstellungen gespeichert werden. Eine "Byte-Zeichenkette" ist eine Reihe von Zeichen, die in einer Darstellung mit acht Bits gespeichert werden (acht Bits werden als Byte bezeichnet). Da Computer heutzutage das Unicode-System (Zeichen, die durch eine variable Anzahl von Bytes dargestellt werden) verwenden, um Zeichen im Speicher zu speichern, und Byte-Strings (Zeichen, die durch einzelne Bytes dargestellt werden), um Zeichen in Dateien zu speichern, muss eine Konvertierung vorgenommen werden, bevor Zeichen, die im Speicher dargestellt werden, in Dateien übertragen werden.

1voto

ahmed samy Punkte 11

Eine Schnur ist ein Bündel von Gegenständen, die aneinandergereiht sind. Eine Byte-Zeichenkette ist eine Folge von Bytes, wie b'\xce\xb1\xce\xac' die die "" . Eine Zeichenkette ist ein Bündel von Zeichen, wie "" . Synonym für eine Sequenz.

Eine Byte-Zeichenkette kann direkt auf der Festplatte gespeichert werden, während eine Zeichenkette (String) nicht direkt auf der Festplatte gespeichert werden kann. Die Zuordnung zwischen ihnen ist eine Kodierung.

0voto

hafiz031 Punkte 1592

Um es einfach auszudrücken, denken Sie an unsere natürlichen Sprachen wie Englisch, Bengalisch, Chinesisch, usw. Alle diese Sprachen geben beim Sprechen Laute von sich. Aber verstehen wir sie alle, auch wenn wir sie hören? -

Die Antwort lautet im Allgemeinen nein. Wenn ich also sage, dass ich Englisch verstehe, bedeutet das, dass ich weiß, wie diese Laute zu sinnvollen englischen Wörtern kodiert sind, und ich dekodiere diese Laute einfach auf dieselbe Weise, um sie zu verstehen. Das Gleiche gilt für jede andere Sprache. Wenn man sie kennt, hat man das Kodierer-Dekodierer-Paket für diese Sprache im Kopf, und wenn man sie nicht kennt, hat man sie einfach nicht.

Das Gleiche gilt für digitale Systeme. Genau wie wir nur mit den Ohren Töne hören und mit dem Mund Geräusche machen können, können Computer nur Bytes speichern und Bytes lesen. Eine bestimmte Anwendung weiß also, wie sie Bytes lesen und interpretieren kann (z. B. wie viele Bytes sie berücksichtigen muss, um eine Information zu verstehen), und sie kann auch auf dieselbe Weise schreiben, so dass ihre anderen Anwendungen sie ebenfalls verstehen. Aber ohne dieses Verständnis (Encoder-Decoder) sind alle Daten, die auf eine Festplatte geschrieben werden, einfach nur Bytefolgen.

-1voto

fiftytwocards Punkte 77

Die Python-Sprachen umfassen str y bytes als standardmäßige "eingebaute Typen". Mit anderen Worten, es sind beides Klassen. Ich glaube nicht, dass es sich lohnt, zu begründen, warum Python auf diese Weise implementiert wurde.

Dies vorausgeschickt, str y bytes sind einander sehr ähnlich. Beide haben die meisten der gleichen Methoden. Die folgenden Methoden sind einzigartig in der str Klasse:

casefold
encode
format
format_map
isdecimal
isidentifier
isnumeric
isprintable

Die folgenden Methoden sind einzigartig in der bytes Klasse:

decode
fromhex
hex

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X