2014-10-19 17 views
0

我想與udp跟蹤器通信並向它發送連接請求。如何使具有特定結構的二進制varibale - php

爲此,我必須首先在php中創建一個16字節的變量並將其發送給跟蹤器。

請求可變結構:

把它第一個64位0x41727101980和32位爲0。

產生一個32位無符號整數,隨機,然後添加生成的號碼,結束該變量的。

最後,我的變量的大小應該是128位等於16個字節。

我用這樣的方式:

$a = time(); 
$connect_request = 0x41727101980; 
$connect_request .= 0x00000000; 
$connect_request .= $a; 
var_dump($connect_request); 

,但結果是:

string '449748612544001413719239' (length=24) 

這是24個字節不是16個字節。

我現在必須要做什麼?

回答

0

你在那裏有數字。

試試這個:

$connect_request = pack("N*",0x417,0x27101980,0,time()); 

如果你有PHP 5.6,那麼你可以使用pack("JN*", 0x41727101980, 0, time()),允許直接64位數字的使用,否則你將需要手動拆分大數字分成兩個較小的數字(每個32位,因此第二個0x...有八個六進制)。

這會將輸入打包爲所需長度的字符串,本例中爲128位或24字節。