You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何将字符串形式的UInt64拆分为两个UInt32值

PHP中如何将字符串形式的UInt64拆分为两个UInt32值

嘿,我来给你捋捋这个问题的解决办法~

咱们都清楚PHP本身不支持UInt64类型,要是直接把字符串形式的UInt64转成数字,百分百会丢失位信息,就拿UInt64的最大值18446744073709551615来说,转成数字肯定出问题。

我一开始的思路是用PHP的pack和unpack函数来处理,具体代码如下:

$number = "18446744073709551615";
$packed = pack('J', $number);
$value1 = unpack('N', substr($packed, 0, 4))[1];
$value2 = unpack('N', substr($packed, 4, 4))[1];

var_dump($packed); // 输出 7fffffffffffffff

给你拆解下每一步的作用:

  • pack('J', $number)会把字符串形式的UInt64打包成大端字节序的64位无符号整数二进制数据,这个过程完全不会受PHP数字类型的限制,也就不会丢位;
  • 接着用substr把打包后的二进制数据切成前4字节和后4字节,这两段分别对应UInt64的高32位和低32位;
  • 最后用unpack('N', ...)把每一段4字节的二进制数据解析成大端字节序的32位无符号整数,这样就得到了咱们需要的两个UInt32值$value1和$value2。

备注:内容来源于stack exchange,提问作者Thom McGrath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 16:20:28