> php教程 > php手册 > 在64位服务器上,php长整型的表示

在64位服务器上,php长整型的表示

WBOY
풀어 주다: 2016-06-21 08:55:40
원래의
1449명이 탐색했습니다.

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 if ($ho echo ($hi

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




관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿