我是靠谱客的博主 殷勤玫瑰,最近开发中收集的这篇文章主要介绍php64位无符号整数,在64位服务器上,php长整型的表示,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

php中,对数据类型的转换可直接使用pack来完成,比如表示字符型,短整型、整型、长整型可分别使用参数c、s、i、N来表示,当然这里转换后的数据为二进制数据,是不可读的,为了能正常读取,可直接unpack来将数据从二进制流还愿成可读的字符类型。

以下为各各类型的实际长度。

$uid = 1346563572;

长度为10,直接为字符类型来计算

echo strlen($uid); // 10

转换短整型,长度为2,当然这里超过了短整型的值范围,所以高位数据会丢失

echo strlen(pack(‘s’,$uid)); // 2

转换为整型,长度为4

echo strlen(pack(‘i’,$uid)); // 4

转换成长整型,长度为4

echo strlen(pack(‘N’,$uid)); //4

其它类型都正确,唯独长整型在64bit机器上始终表示4位,应该为8bit才对,所以为了解决这种问题,在不丢失数据的数据,可采用以下方式进行转换。

$i = 333333333333333333;

$v = pack(“NN”,$i >> 32,$i&0xFFFFFFFF);

file_put_contents(“/tmp/long.txt”,$v);

echo strlen($v)

长度为8

读取可采用以下方式

$v = file_get_contents(“/tmp/long.txt”);

list ($hi,$lo) = array_values(unpack(“N*N*”,$v));

if ($hi <0) $hi += (1 < < 32);

if ($ho <0) $lo += (1 << 32);

echo ($hi << 32) + $lo;

备注:以上脚本均在64位版本的php环境中运行。

最后

以上就是殷勤玫瑰为你收集整理的php64位无符号整数,在64位服务器上,php长整型的表示的全部内容,希望文章能够帮你解决php64位无符号整数,在64位服务器上,php长整型的表示所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部