7

Possible Duplicate:
pack() in php. Illegal hex digit warningपीएचपी चेतावनी: पैक(): प्रकार एच: अवैध हेक्स अंकों आर त्रुटि

मैं सेब के पुश अधिसूचना सेवा का उपयोग कर रहा हूँ और आदेश सूचना भेजने के लिए, आप बाइनरी में संदेश का निर्माण करने के लिए है। मैं नीचे लाइन के लिए निम्न त्रुटियों मिला:

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

यहाँ त्रुटि फेंक कोड की पंक्ति है:

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

और

$devicetoken=773f5436825a7115417d3d1e036da20e806efeef547b7c3fe4da724d97c01b30 

मैं इंटरनेट एक बहुत की खोज नहीं की, लेकिन मुझे नहीं पता कि बाइनरी के साथ गड़बड़ कैसे करें, क्या हो रहा है इस पर कोई मदद की सराहना की जाएगी!

उत्तर

0

मैं समस्या समझ 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

के लिए इस समारोह का प्रयास करें। $ device टोकन एक स्ट्रिंग के बजाय एक सरणी थी। मैंने $ डिवाइस टोकन = $ पंक्ति ['devicetoken'] का उपयोग किया; सही पंक्ति पाने के लिए और सब ठीक है। –

+0

ग्रेट सामान। यह सुनकर खुशी हुई कि आपने इसे स्वयं पाया है। –

+0

यह महान है कि आपने इसे समझ लिया है, लेकिन यह महसूस करना अधिक महत्वपूर्ण है कि 1) आपके द्वारा पारित सरणी को 'पैक' द्वारा स्ट्रिंग में परिवर्तित किया जा रहा था; 2) स्ट्रिंग मान टेक्स्ट 'ऐरे' था; 3) उस स्ट्रिंग में 'r' और' y' वर्ण मान्य हेक्स अंकों नहीं हैं; 4) ... यही कारण है कि यह असफल रहा। –