我正在用PHP编写二进制套接字协议的客户端,这很痛苦。我目前正在使用pack
将数字转换为二进制字符串,但它缺乏。 pack
有两个选项:
但我需要以大端序列编写带符号的32位整数,就像Java的DataOutputStream.writeInteger
一样。 pack
没有该选项。
有没有办法用pack
执行此操作,或者转换pack
的输出,或者可能是更好的库来处理PHP中的二进制数据?
答案 0 :(得分:2)
您使用Zend Framework吗?如果是这样,您可以使用函数Zend_Io_Writer::writeInt32BE()
将带符号的32位整数写为 big-endian将二进制数据排序到 流。
否则你应该看看ZF-source这些家伙如何处理这个问题。
答案 1 :(得分:0)
PHP pack()
的规范表明,无符号/签名区别仅对unpack()
而非pack()
很重要。
所以只需使用32位网络字节顺序选项(N
)。