在32位服务器上键入转换大整数

时间:2015-11-06 12:59:11

标签: php

我有以下代码。

<?php
$id=3001957093; //between 1 and 4,294,967,295
echo($id."\n".(int)$id."\n");

在我的x86_64 Centos PHP版本5.5.24开发物理盒中,(int)$id$id相同。但是,在我的i386 Centos PHP版本5.5.18生产虚拟服务器上,(int)$id-1293010203

阅读http://php.net/manual/en/language.types.integer.php,我看到了:

  

整数的大小取决于平台,尽管是最大值   大约20亿是通常的值(32位签名)。   64位平台的最大值通常约为9E18,除了   Windows 7之前的Windows,总是32位。 PHP没有   支持无符号整数。整数大小可以使用   常量PHP_INT_SIZE,使用常量PHP_INT_MAX的最大值   自PHP 4.4.0和PHP 5.0.5以来,使用常量的最小值   自PHP 7.0.0以来的PHP_INT_MIN。

啊哈,这解释了它!

在32位服务器上,如何确保1到4,294,967,295之间的数字是整数?

如何根据转换后的价值(即-1293010203)判断原始数字(即3001957093)是什么?

0 个答案:

没有答案