我正在尝试将数字101
转换为二进制\x00\x65
而我不知道如何。
我试过这个:
$decimal = 101;
return bin2hex(pack('S', $decimal));
但结果是6500
。
这个数字将会改变,当然这必须是动态的。有没有办法转换它?
这必须使用以下代码通过套接字(TCP / IP)发送数据:
$socket = @fsockopen('127.0.01', '8810', $err_no, $err_str);
if(!$socket){
exit('Errore #'.$err_no.': '.$err_str);
}else{
fwrite($socket, "?B\x00\x65\x00\x01\x00\x01");
$read = fread($socket, 255);
return $read;
fclose($socket);
// $decimal = 101;
// return bin2hex(pack('n', $decimal));
}
请参阅我发送的fwrite
字符串。
以不同方式发送数据不起作用。
答案 0 :(得分:1)
return bin2hex(pack('n', $decimal));
你只是遇到字节序问题。 'n'
用于无符号短(始终为16位,大端字节顺序)。
答案 1 :(得分:-2)
使用以下功能
string decbin ( int $number )
此函数将以字符串格式返回二进制数。您需要将十进制数作为参数传递。
为了更好的解释和更多示例,只需go though php official documentation