2009-02-26 16 views
1

Ich habe Struktur wie folgt:Wie Byte-Array in Zeichenfolge konvertieren?

struct Daten {int nein; Name der Zeichenfolge; int id};

Ich konvertiere diese Struktur in Bytearray. Ich muss dies wieder in das Strukturformat konvertieren. Dazu muss ich die ersten Member in Integer und String konvertieren. Wie konvertiert man Bytearray in Struktur?

+1

Welche Sprache/Architektur? Eine C++ - Antwort und eine C# /. NET-Antwort werden sehr anders aussehen! –

Antwort

1

Überprüfen Sie die BitConverter Klasse. Hier ist ein Beispiel für how to convert byte array to int.

Für String-Konvertierung BitConverter ist nicht wirklich nützlich (wie Marc in seinem Kommentar erwähnt), obwohl es die ToChar() -Methode hat. Sie können stattdessen ASCIIEncoding, UTF8Encoding oder eine der anderen XxxEncoding-Klassen im Namespace System.Text verwenden.

Hinweis, dies ist .Net spezifisch.

+0

BitConverter wird Ihnen nicht mit Strings helfen; und Sie müssen sehr vorsichtig sein, wenn es um Endianess geht (da BitConverter die Endlichkeit der CPUs verwendet; keine feste Endianz wie die Netzwerkbyte-Reihenfolge). –

+0

Technisch hat BitConverter die ToChar(), die Konvertierung in Zeichenfolge ermöglicht. Nicht der beste Ansatz, stimme ich zu. –

+0

BitConverter für die Ints und dann Encoding.GetString() für die Zeichenfolgen. Encoding.GetString() benötigt möglicherweise die Verwaltung des Nullterminators. – Cheeso

1

Nun, die Antwort hängt wirklich davon ab, wie Sie die Struktur in Byte-Array konvertieren. Theoretisch müssen Sie die gleichen Schritte in umgekehrter Reihenfolge ausführen!

Zum Beispiel, wenn Sie die Struktur serialisiert werden, so dass:

  • ersten 4 Bytes = keine
  • Sekunden 4 Byte = id
  • Rest Bytes = Byte-Strom von Zeichen in Namen

Um das Byte-Array zurück in die Struktur zu konvertieren, müssen Sie nur eine Variable dieses Strukturtyps definieren und die Elemente mit Werten aus dem Byte-Array konvertieren!

1

Beachten Sie, dass viele Plattformen Tools für diesen Zweck enthalten; während Sie können schreiben Sie [de] Serialisierungscode, es kann sehr schnell langweilig werden.

Zum Beispiel ist googles protocol buffers ein sprachunabhängiger * Mechanismus zur Beschreibung eines Drahtformats. Sie können technisch besser (kleine) Serialisierung, wenn man alles von Hand machen, aber es wird viel mehr Arbeit ...

* = C++, Java, etc in dem Google-Repo sein - zuzüglich lots more von der Gemeinde

Verwandte Themen