【发布时间】:2012-10-21 21:46:15
【问题描述】:
我使用的是 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 个字节)这一事实。当我在我的虚拟主机服务器上运行代码时,它是一个 64 位系统,int 大小是原来的两倍。
有没有办法强制 "(int)" 强制转换使用 32 位大小?
例如,假设以下代码:
$test = 4170266799;
print $test;
print (int) $test;
在我的 32 位 系统上,输出为:
4170266799
-124700497
在我的 64 位 系统上,输出为:
4170266799
4170266799
是否可以强制 INT 的值为 4 字节,即使架构从 32 位更改为 64 位?
【问题讨论】:
-
我会修复编码算法...
-
这是the XY Problem 的实例吗?您真正想解决什么问题?
-
不,这不是 XY 问题的一个实例。我正在转换用本机编译代码编写的大型代码库的一部分。我正在迁移到 PHP 以从 Web 访问其中的一部分,但是它必须以我的 32 位应用程序所期望的相同方式生成信息。这就是我依赖 INT 大小的原因。我选择进行尽可能接近的转换,而不是重新设计逻辑以生成相同的结果。幸运的是,我现在可以使用它了。
-
@Mick,您始终可以使用预编译器为您进行修改。