PHP将整数转换为32位(4字节)十六进制用于套接字编程

时间:2014-11-06 19:33:09

标签: php sockets byte pack unpack

我需要将整数转换为4字节(32位)十六进制,以便将其作为ACK发送到我当前正在尝试集成的设备。

例如

  

3 = 00000003   15 = 0000000F

检查http://www.mathsisfun.com/binary-decimal-hexadecimal-converter.html 1.从下拉列表中选择带符号的32位 2.在decomal文本框中输入值 3.检查十六进制字段中的值。

我正在使用带有此参数的php pack函数,但根据设备的响应,它似乎不是正确的方法。

$reply = pack(L*,$num);

这是正确的参数还是有其他方法。 请suuggest。

1 个答案:

答案 0 :(得分:1)

我愿意

$a = 15;
var_dump( sprintf("%08X", $a) );
$a = 3;
var_dump( sprintf("%08X", $a) );

此输出

string(8) "0000000F"
string(8) "00000003

08X表示使用0(如果需要)填充8个字符串,并将参数视为十六进制。 (大写字母)

所以在你的例子中

$reply = sprintf("%08X", $num)