Gehen Sie zum ASCII-Byte-Array

70

Wie kann ich meine Zeichenfolge als ASCII-Byte-Array codieren?

Upz
quelle

Antworten:

116

Wenn Sie nach einer Konvertierung suchen, tun Sie dies einfach byteArray := []byte(myString)

Die Sprachspezifikation beschreibt die Konvertierungen zwischen Zeichenfolgen und bestimmten Arten von Arrays (Byte für Byte, int für Unicode-Punkte).

cthom06
quelle
19
Ich denke, cthom06 erkennt dies, aber dies ist streng genommen kein "ASCII" -Byte-Array. Es ist eher wie ein UTF-8-Byte-Array. Wenn die Zeichenfolge Nicht-ASCII-Zeichen enthielt, befinden sich auch hier die Bytes für diese Zeichen. Wenn Sie möchten, dass Ihr Code mit verschiedenen Sprachen gut funktioniert, sollten Sie dies immer berücksichtigen.
Evan Shaw
1
@ Chickencha das stimmt. Ich gab die schnelle und schmutzige Antwort. Aber ich habe die [] int-Konvertierung für eine bessere Unicode-Handhabung erwähnt
cthom06
3
Ab Go Version 1 sollten Sie den integrierten Runendatentyp für die Unicode-Behandlung verwenden.
Hannson
Die Sprachspezifikation beschreibt die Konvertierungen zwischen Zeichenfolgen und bestimmten Arten von Arrays (Byte für Byte, int für Unicode-Punkte). => Die Kodierung / Dekodierung ist UTF8.
Fjjiaboming
Was ist mit ASCII-Zeichen größer als 127? Diese Lösung gibt dann ein 2-Byte-Zeichen zurück, aber ASCII ist nur ein Byte. Zum Beispiel Zeichen 170?
TehSphinX
8

Möglicherweise müssen Sie nichts tun. Wenn Sie nur Bytes einer Zeichenfolge lesen müssen, können Sie dies direkt tun:

c := s[3]

Die Antwort von cthom06 gibt Ihnen einen Byte-Slice, den Sie bearbeiten können:

b := []byte(s)
b[3] = c

Anschließend können Sie aus dem geänderten Byte-Slice eine neue Zeichenfolge erstellen, wenn Sie möchten:

s = string(b)

Aber Sie haben ASCII erwähnt. Wenn Ihre Zeichenfolge zunächst ASCII ist, sind Sie fertig. Wenn es etwas anderes enthält, haben Sie mehr zu tun und möchten möglicherweise eine weitere Frage mit weiteren Details zu Ihren Daten stellen.

Sonia
quelle