我玩pack()
的时间超过了我想承认的时间,偶然偶然发现了data structure alignment。是否有一种“好”的方法从PHP中创建C结构并考虑这些额外的填充字节?
我知道您可以使用“x”来注入NULL字节,但是如何确定这些字节的去向以及以编程方式使用多少?
同样,这些方法中哪一种更适合建模char foo[10]
数组?
$struct = pack('a9x', $string);
// vs.
$struct = pack('a10', substr($string, 0, 9));
我相信他们都做了同样的事情,但我不确定是否有任何潜在的陷阱。
答案 0 :(得分:1)
您尝试做的事情是可以实现的,但非常危险。让我解释一下:
现在你在PHP中尝试做的是对这个编译/链接/加载过程的部分重新实现,但没有可靠的机制来确定适应环境。
我建议两种恕我直言中的一种更可靠的方法来做到这一点: