使用包是在PHP走正确的路,这里是如何使用它您所需要的信息返回例如:
<?php
$string = 'hello world';
$bytes = pack ('N', strlen ($string)); // unsigned 32 bit big endian byte order
?>
为了解析第4个原始字节回了一些,这假定名为$ rawBytes的变量包含从tcp数据包中读取的数据。在PHP
<?php
$decoded = unpack ('N', substr ($rawBytes, 0, 4););
$length = end ($decoded);
?>
一个不幸的小问题,就是二进制既懂在Windows计算机和Linux的32位/苹果/ Unix机器的32位有符号整数。在Linux /苹果/ Unix机器上运行
2,147,483,648 2,147,483,647
64位二进制代码PHP有签署64位整数的最大整数值。
-9,223,372,036,854,775,808 9,223,372,036,854,775,807
但在使用64位二进制文件在Windows机器上仍然有32位有符号整数的整数大小。
超出整数范围的任何内容都将转换为浮点数。
'pack(“N”,int)'正是我所需要的!感谢这个答案,所有问题都解决了。 :)也感谢周围的解释,今天学到了一些东西。 –