Entfernen Sie nachgestellte Nullen aus byte[]?

Arbeite ich mit dem TCP-Protokoll und Lesen vom socket und schreibt die Daten in ein byte [] - array.
Hier ist ein Beispiel mit meinen Daten:

94 39 E5 D9 32 83
D8 5D 4C B1 CB 99 
08 00 45 00 00 98 
41 9F 40 00 6C 06 
9C 46 26 50 48 7D 
C0 A8 01 05 03 28

Erstellte ich ein byte [] - array mit der Größe von 1024. Jetzt benutze ich diese Methode zum entfernen von null-Indizes:

public void Decode(byte[] packet)
{
    byte[] temp;
    int c = 0;
    foreach(byte x in packet)
        if (x != 0)
            c++;
    temp = new byte[c];
    for (int i = 0; i < c; i++)
        temp[i] = packet[i];
    MessageBox.Show(temp.Length.ToString());
}

Aber es entfernt auch 0x00-Indizes, dass Sie vielleicht nützliche Daten...
Wie kann ich entfernen Sie die 0, die nicht gewickelt mit nicht-null-Daten (trailing-0s)?

Wie können Sie sagen, ob eine null ist, "nützlich" oder nicht?
was meinst du mit null-Indizes ?
denn die Reihenfolge ist sehr wichtig für mich...
Ein index kann nicht null in einem array. Weder der Wert, weil byte ist ein Wert-Typ. Wollen Sie zu entfernen, 0x00 Werte aus dem array?
Wenn dein byte[] gefüllt ist, sollte man sich ein Wert irgendwo sagen Ihnen, wie viele bytes gelesen wurden (dies ist derzeit wahrscheinlich ein Rückgabewert aus einem Read Methode, die ignoriert wird). Sie sollten dies verwenden, um die Größe der array-statt nur trimmen die 0 am Ende.

InformationsquelleAutor Soroush Khosravi | 2012-06-29

Schreibe einen Kommentar