894 Stimmen

Konvertierung von Byte-Array in String

Ich habe ein Byte-Array mit zwei Zeichenketten erstellt. Wie kann ich ein Byte-Array in eine Zeichenkette umwandeln?

var binWriter = new BinaryWriter(new MemoryStream());
binWriter.Write("value1");
binWriter.Write("value2");
binWriter.Seek(0, SeekOrigin.Begin);

byte[] result = reader.ReadBytes((int)binWriter.BaseStream.Length);

Ich möchte konvertieren result zu einer Zeichenkette. Ich könnte es tun mit BinaryReader aber ich kann nicht verwenden BinaryReader (sie wird nicht unterstützt).

5 Stimmen

Sie haben bereits die Strings, also können Sie nicht genau das tun - was genau son was Sie tun?

2 Stimmen

@harold von einem "value1/2" Strings Ich denke, es ist nur ein Beispiel.

0 Stimmen

Der Auftraggeber hat die Antwort, die von einer UTF-8-Kodierung ausgeht, nicht akzeptiert, wohl aber eine andere Antwort, die besagt, dass es nicht sicher ist, von einer UTF-8-Kodierung auszugehen.

1435voto

eulerfx Punkte 35316

Je nach gewünschter Kodierung:

var str = System.Text.Encoding.Default.GetString(result);

32 Stimmen

Sie sollten auch die Encoding-Klasse verwenden, um die Zeichenkette in ein Byte-Array zu schreiben.

8 Stimmen

Das führt zu einem merkwürdigen Ergebnis, denn er hat die Zeichenfolge mit der Überladung BinaryWriter.Write(string) geschrieben, die zunächst die Länge der Zeichenfolge speichert.

0 Stimmen

Beachten Sie, dass dadurch die Bytes, die in die Zeichenkette eingehen, bereinigt werden, um der Kodierung zu entsprechen. Wenn Sie eine schlechte Sequenz von Bytes für diese Kodierung testen möchten, verwenden Sie die BlockCopy-Methode unten von HforHisham.

426voto

ba0708 Punkte 9544

Unter der Annahme, dass Sie die UTF-8-Kodierung verwenden:

string convert = "This is the string to be converted";

// From string to byte array
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(convert);

// From byte array to string
string s = System.Text.Encoding.UTF8.GetString(buffer, 0, buffer.Length);

44 Stimmen

Diese Antwort erspart den Lesern die unvermeidliche Google-Suche nach der anderen Umrechnungsrichtung.

4 Stimmen

Diese Antwort ist aufgrund der Kodierungsspezifikation und der Konvertierung auf der anderen Seite genauer.

13 Stimmen

Welche Verdienste hat System.Text.Encoding.UTF8.GetString(buffer, 0, buffer.Length); bringen im Vergleich zu System.Text.Encoding.UTF8.GetString(buffer); ?

30voto

HforHisham Punkte 1800

Sie können dies tun, ohne sich mit der Kodierung zu befassen, indem Sie BlockCopy :

char[] chars = new char[bytes.Length / sizeof(char)];
System.Buffer.BlockCopy(bytes, 0, chars, 0, bytes.Length);
string str = new string(chars);

0 Stimmen

Das hat bei mir nicht funktioniert. Ich bekam einen Fehler bei der Länge (nicht geteilt ergibt die Länge, die ich brauchte). Nachdem ich die korrekte Länge erhalten hatte, bekam ich eine argumentException beim Versuch, die Zeichenfolge zu konstruieren.

1 Stimmen

Dies funktioniert nur, wenn Ihre Zeichenkette mit UTF16 kodiert wurde, was bedeutet c# String's internes Standard-Kodierungsschema . Wenn, sagen wir, das Byte-Array einfach mit ASCII-Zeichen aus der ursprünglichen Zeichenkette kodiert wurde (vorausgesetzt, das ist möglich), wird nach dem BlockCopy jedes Zeichen mit zwei solchen ASCII-Zeichen gequetscht, was eindeutig falsch ist.

12 Stimmen

Auf der anderen Seite, wenn Sie versuchen, eine beschädigte Zeichenfolge für die Prüfung zu erstellen, ist dies genau der richtige Weg, es zu tun. Danke!

12voto

Mansoor Ali Punkte 153

Um Byte[] in String[] zu konvertieren, verwenden Sie einfach die folgende Zeile.

byte[] fileData; // Some byte array
//Convert byte[] to string[]
var table = (Encoding.Default.GetString(
                 fileData, 
                 0, 
                 fileData.Length - 1)).Split(new string[] { "\r\n", "\r", "\n" },
                                             StringSplitOptions.None);

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