Ich habe hier einen Code, den ich entweder Versicherung, oder "nein nein nein!" etwa in Bezug darauf, ob ich darüber richtig oder völlig falsch nachdenke.Umgang mit binären Daten und mb_function overloading?
Dies hat damit zu tun, eine Variable von Binärdaten an einer bestimmten Stelle zu schneiden, und auch mit Multi-Byte-überladenen Funktionen umzugehen. Zum Beispiel substr
ist eigentlich mb_substr
und strlen
ist mb_strlen
usw.
Unser Server ist auf UTF-8
interne Codierung und so Theres diese seltsame kleine Sache, die ich tue es für diese binäre Datenmanipulation zu umgehen:
// $binary_data is the incoming variable with binary
// $clip_size is generally 16, 32 or 64 etc
$curenc = mb_internal_encoding();// this should be "UTF-8"
mb_internal_encoding('ISO-8859-1');// change so mb_ overloading doesnt screw this up
if (strlen($binary_data) >= $clip_size) {
$first_hunk = substr($binary_data,0,$clip_size);
$rest_of_it = substr($binary_data,$clip_size);
} else {
// skip since its shorter than expected
}
mb_internal_encoding($curenc);// put this back now
Ich kann die Eingabe- und Ausgabeergebnisse nicht wirklich anzeigen, da es sich um Binärdaten handelt. Aber Tests mit den oben genannten scheinen gut zu funktionieren und nichts bricht ...
Allerdings schreien Teile meines Gehirns "Was machst du ... das kann nicht der Weg sein, damit umzugehen"!
Anmerkungen:
- Die in den kommenden Binärdaten, ist eine Verkettung dieser beiden Teile zu beginnen.
- Die Größe des ersten Teils ist immer bekannt (ändert sich aber).
- Die Größe des zweiten Teils ist völlig unbekannt.
- Dies ist ziemlich dicht in der Nähe der Verschlüsselung und stopfte die IV auf der Vorderseite und riss es wieder ab (was seltsamerweise fand ich einige alte Code, der das gleiche tut lol ugh).
Also, ich denke, meine Frage ist:
- Ist das eigentlich in Ordnung tun werden?
- Oder gibt es etwas sehr offensichtlich, das ich übersehe?
Versuchen Sie, die Binärdatei in Variablen zu analysieren, um sie in Ihrem Code zu verwenden? Was ist der Zweck von $ first_hunk und $ rest_of_it? – rlanvin
Der Endzweck ist ein bisschen unklar, auf den ich lieber nicht eingehen würde;) ... aber ich kann sagen, dass die erste und die zweite Variable am Ende zwei Teile der ursprünglichen binären Daten enthalten sollten Cliplänge) (was bei der Oddball-Methode gut ist). – IncredibleHat
Ich habe einige Notizen über die Binärdatei hinzugefügt. – IncredibleHat