首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在php < 5.6中模拟pack('J')

在php < 5.6中模拟pack('J')
EN

Stack Overflow用户
提问于 2016-12-09 10:21:40
回答 1查看 212关注 0票数 3

我需要pack('J', $val)在php5.5,但'J‘只支持5.6以后。

如何在php-5.5中模拟它?没有必要对64位数据进行打包。

我的尝试似乎不正确(在Win7 64位上):

代码语言:javascript
复制
pack('J', $val) === pack('N', 0) . pack('N', $val)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-09 12:19:59

也许有一种更明智的方法可以做到这一点,但这是可行的:

代码语言:javascript
复制
// base_convert() will treat your value as a string here,
// converting it from decimal to hexadecimal
$hexStringValue = base_convert($your64bitInteger, 10, 16);

// Pad with zeros to the left, until pack()'s output length is matched
$hexStringValue = str_pad($hexStringValue, 16, '0', STR_PAD_LEFT);

// Convert to binary
$packed64bitInteger = hex2bin($hexStringValue);

不过,我必须指出,无论如何,PHP 5.5于2016年7月达到EOL和您都应该升级到至少5.6版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41058141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档