Ik heb mijn stuk code vereenvoudigd tot het volgende:
De * bij pack() geeft aan dat er automatisch gedetecteerd wordt hoeveel karakters er nodig zijn om het getal te coderen, en dit gaat goed. In dit geval zijn er 3 karakters nodig.
Maar bij unpack() werkt * niet goed. Hij zou moeten bepalen dat er 3 karakters zijn, maar maakt er toch 4 van.
Als ik * vervang door het getal 3, dan gaat het wel goed.
Het probleem lijkt te zitten als het resultaat van pack() een oneven aantal karakters terug geeft.
Op PHP.net en andere sites wordt hier verder niet op ingegaan, en blijft het bij de uitleg van de functie zelf.
Hoe krijg ik het nu voor elkaar dat unpack() met het juiste aantal tekens weer decodeert?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
| $Value = 611; $Base16Number = base_convert($Value, 10, 16); $HexValue = pack("H*", $Base16Number); echo "#".$Value."#".$Base16Number."#".$HexValue."#<br>"; // Resultaat: #611#263#&0# $UBase16Number = unpack("H*", $HexValue); $ResultValue = base_convert($UBase16Number[1], 16, 10); echo "#".$UBase16Number[1]."#".$ResultValue."#<br>"; // Resultaat: #2630#9776# |
De * bij pack() geeft aan dat er automatisch gedetecteerd wordt hoeveel karakters er nodig zijn om het getal te coderen, en dit gaat goed. In dit geval zijn er 3 karakters nodig.
Maar bij unpack() werkt * niet goed. Hij zou moeten bepalen dat er 3 karakters zijn, maar maakt er toch 4 van.
Als ik * vervang door het getal 3, dan gaat het wel goed.
Het probleem lijkt te zitten als het resultaat van pack() een oneven aantal karakters terug geeft.
Op PHP.net en andere sites wordt hier verder niet op ingegaan, en blijft het bij de uitleg van de functie zelf.
Hoe krijg ik het nu voor elkaar dat unpack() met het juiste aantal tekens weer decodeert?
Speel ook Airplane Manager en Repeat