我正在使用 PHP 5.3。
在我的 32 位系统上,INT 的大小:
print "PHP_INT_MAX: " . PHP_INT_MAX . "\n";
print "PHP_INT_SIZE: " . PHP_INT_SIZE . " bytes (" . (PHP_INT_SIZE * 8) . " bits)\n";
- PHP_INT_MAX:2147483647
- PHP_INT_SIZE:4 字节(32 位)
然而,我使用的编码算法的一部分依赖于 int 是上述大小(4 字节)这一事实。当我在 Web 主机的服务器上运行代码时,它是 64 位系统,并且 int 大小是原来的两倍。
有没有办法强制“(int)”转换使用 32 位大小?
例如,假设以下代码:
$test = 4170266799;
print $test;
print (int) $test;
On my 32-bit系统,输出为:
4170266799
-124700497
On my 64-bit系统,输出为:
4170266799
4170266799
即使架构从 32 位更改为 64 位,是否可以强制 INT 的值为 4 字节?
不,这很大程度上取决于平台本身:
整数的大小取决于平台,尽管最大值
大约 20 亿是通常的值(即 32 位有符号)。
64 位平台的最大值通常约为 9E18。 PHP 确实
不支持无符号整数。
而且由于公开整数大小和整数最大值的值是常量,因此它们无法更改 - 在 PHP 编译时根据当前系统确定。
没有太多安慰,但这就是为什么依赖诸如常量之类的东西(这不是你可以更改的,并且可能会在每次构建时更改)或任何类型的“sizeof”实现与代码中的幻数一样邪恶- 不要这样做。我们可以确定的一件事(至少,我希望!)是 4 是并且永远都是 4,但不是那样x, y, or z将代表 4,即使他们现在这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)