0
我玩過pack()
的時間比我想承認的要長,並且偶然偶然發現了data structure alignment。有沒有一種「好」的方式來從PHP內部創建C結構並考慮這些額外的填充字節?從PHP包裝C結構
我知道你可以使用「x」來注入NULL字節,但你如何確定這些去哪裏以及以編程方式使用多少?
沿着同樣的路線,這些方法哪個更適合對char foo[10]
陣列進行建模?
$struct = pack('a9x', $string);
// vs.
$struct = pack('a10', substr($string, 0, 9));
我相信他們都完成同樣的事情,但我不確定任何潛在的陷阱。
謝謝你的回答。在正常情況下,我會選擇不做我在做的事情,但不幸的是,這不是一種選擇。我無法在我的目標系統上重新編譯PHP,所以(我認爲)PHP擴展是不可能的。我也有保持向後兼容某些遺留的C二進制兼容性,並切換消息系統會...困難。只是在一個側面說明:-) – FtDRbwLXw6 2013-05-14 13:20:41
:你不需要重新編譯PHP編譯的延伸。只需創建一個基本擴展名,運行'phpize'並製作。即使在窗戶上工作... – 2013-05-14 13:50:51