2014-08-28 62 views
0

我越來越PHP包警告:包():參數未使用

警告:包():1個論點

$vector = pack("H*",0x77,0x99); 




$vector = pack("H*","4A","76"); // with quotes also give same warning 

未使用的,但如果我只用一個值沒有警告

$vector = pack("H*",0x77); 

有人知道這個警告嗎?

我應該傳遞什麼樣的價值。它應該是十六進制嗎?

+0

所以,如果我理解正確的PHP,那麼'0x77'先轉換爲十進制值, '119',然後轉換成一個字符串,呃,'119',然後仍然通過十六進制解碼? – 2014-08-29 11:10:29

+0

是的,它確實:結果是十六進制的「1190」。嘖。 – 2014-08-29 11:31:35

回答

2

你應該通過它的十六進制數的字符串,像這樣:

$vector = pack("H*", "7799"); 

如果使用0x77你已經有了一個值77H的數值,即編譯器會從十六進制數轉換價值爲二進制 - 沒有必要使用pack就可以了。

如果你真的想使用0x77,0x99記號,然後把符號在引號和使用以下命令:

$hex="0x77,0x99"; 
preg_match_all("/0x([0-9A-F]{2})/i", $hex, $out); 
$data = pack("H*", join($out[1])); 
+0

謝謝。但即使我試圖在報價中給出兩個值,我也會得到同樣的警告。你有沒有嘗試兩個或更多的價值觀?其實我必須轉換一個,網絡腳本爲PHP。在.net中它們傳遞字節數組中的0x4A。所以在PHP中,我應該通過什麼? – zod 2014-08-29 14:53:59

+0

您可以簡單地傳遞一個由「\ xHH \ xHH」構成的「字符數組」,其中H是一個十六進制字符。你當然可以用上面提到的方案,並簡單地連接十六進制。我以前只是使用正則表達式將字節數組轉換爲另一個。作爲密碼學家,我終於有了足夠的資源,現在有一個名爲「Octational」的工具,可以在任何形式的字節之間進行轉換。不幸的是,我在工作中創造了這樣的東西,所以我們不能分享。 – 2014-08-29 18:27:17

+0

哦男人...謝謝你的信息...但是你的意思是這個..或其他..只是舉一個例子.. $ vector = pack('H *',「\ x04 \ x09」); – zod 2014-08-29 19:57:36