Zero String Terminator Problem

06/28/2012 21:38 Crack-wtf#1
Hey ich habe ein problem mit dem Doofen String Terminator.

Ich arbeite im moment an einem Packet editor.

Dort habe ich die Funktion eingebaut, dass man Packete, welche in einer Listview sind, mit dem Aktivieren einer Checkbox als String anzeigen kann.

Aber wenn "00" im Packet ist, wird der string nicht richtig in die Listview gepackt.

Und das Problem ist, dass man mit dem unchecken der checkbox, das Packet wieder normal angezeigt werden soll.

Ich habe keinen Schimmer wie ich diese Problem lösen soll.

Ich dachte an irgendwas mit unicode.

Oder nach 00 suchen, das durch z.B. ZZ ersetzen, und 77 dann durch punkt ersetzen.

Bin mir aber irgendwie grad nicht klar im kopf vll. kann mir einer helfen.
06/28/2012 22:46 lolkop#2
bau das ganze doch mal manuell nach, und poste ein beispielscript mit deinem problem...

bsp:
Code:
$packet = ...
...[GUI]...
...[main loop]...
06/28/2012 22:52 Crack-wtf#3
Habe nach kurzer verschnaufpause eine für mich perfekte lösung gefunden.

Ich suche im packet nach " 00" und ersetze es durch " 1C 1D 1E 1F".
Das sind im StringFormat nicht sichtbare zeichen.
Und beim Rückwandeln suche ich nach " 1C 1D 1E 1F" und wandle es zu " 00" um.

Denke die wahrscheinlichkeit, dass in einem packet " 1C 1D 1E 1F" vorhanden ist, beträgt 0.0001 zu 100.

Naja evtl. sollte ich nicht umbedingt nach der reihe machen, sondern " 1F 1E 1D 1C"
06/29/2012 00:24 MrSm!th#4
Wieso so ein Aufwand? Zeig doch einfach Binary Ansicht und ASCII Ansicht direkt nebeneinander und ersetze 0en wie jeder gute Hex Editor mit Punkten; wenn man sich nicht sicher ist, ob es sich wirklich um nen Punkt handelt (wobei du das auch über den Font regeln kannst), kannst du halt in die Binary Ansicht schauen.

Oder filter die 0en einfach ganz raus, wenn es dir darum geht, ein Packet als String anzuzeigen, denn da machen sie ja eh keinen Sinn.
06/29/2012 00:36 Crack-wtf#5
Ja nur wie gesagt will ich wenn die Checkbox wieder deaktiviert ist, die Packets wieder als Hex anzeigen.

Könnte natürlich per Array die Hex Packets Zwischenspeichern, aber habs ja jetzt geregelt.