7

Possible Duplicate:
pack() in php. Illegal hex digit warningPHP Warning: pack(): Typ H: illegal Hexadezimalzeichens r Fehler

I Apfel Push-Benachrichtigungsdienst und um bin Nutzung der Benachrichtigung zu senden, müssen Sie die Nachricht in binären bauen. Ich habe die folgenden Fehler für die Zeile unter:

Warning: pack(): Type H: illegal hex digit r

Warning: pack(): Type H: illegal hex digit y

Notice: Array to string conversion in C:\xampp\htdocs\firecom\FireComAPNS.php on line 130

Hier ist die Codezeile zu werfen den Fehler:

$msg = chr(0).pack('n', 32).pack('H*', $devicetoken).pack('n',strlen($payload)) . $payload; 

und

$devicetoken=773f5436825a7115417d3d1e036da20e806efeef547b7c3fe4da724d97c01b30 

Ich habe viel im Internet gesucht, aber ich habe keine Ahnung, wie man mit binär umgehen soll, jede Hilfe bei dem, was vor sich geht, würde sehr geschätzt werden!

Antwort

0

Versuchen Sie, diese Funktion für PHP < 5.4.0

function hex2bin($hexdata) { 
    $bindata=""; 
    for ($i=0;$i<strlen($hexdata);$i+=2) { 
     $bindata.=chr(hexdec(substr($hexdata,$i,2))); 
    } 

    return $bindata; 
} 
+4

ich das Problem gelöst. $ deviceToken war ein Array anstelle einer Zeichenfolge. Ich habe $ deviceToken = $ row ['devicetoken']; um die richtige Reihe zu bekommen und alles ist wieder gut. –

+0

Großartiges Zeug. Freut mich zu hören, dass du es selbst gefunden hast. –

+0

So großartig, dass Sie es herausgefunden haben, aber es ist wichtiger zu erkennen, dass 1) das Array, das Sie übergeben haben, mit 'pack' in eine Zeichenkette umgewandelt wurde; 2) Der String-Wert war der Text 'Array'; 3) Die Zeichen "r" und "y" in dieser Zeichenfolge sind keine gültigen Hexadezimalziffern; 4) ... deshalb ist es gescheitert. –