用 PHP 签名的二进制到十进制 32 位

Binary to Decimal 32bit signed with PHP

我目前有一个小数作为:4294960896

然后使用此函数将其转换为二进制:

decbin('4294960896')

等于:11111111111111111110011100000000

然后我需要获取该二进制文件并将其转换为 32 位签名版本,该版本应为“-6400”

我似乎找不到任何支持 32 位签名输出的内置函数。

数字4294960896的十六进制表示是FFFFE700h。这应该被解释为 32 位有符号长。 支持此类任务的函数是 pack and unpack.

$i64 = 4294960896;

$i32 = unpack('l',pack('V',$i64))[1];
//int(-6400)