【发布时间】:2018-08-25 11:12:48
【问题描述】:
我尝试在 php 中将 32 位的有符号整数转换为无符号整数。但我无法获得无符号整数的绝对值。
示例:
$value = 65547;
if (PHP_INT_SIZE == 8)
{
if ($value>0x7FFFFFFF)
{
$value-=0x100000000;
}
}
还有其他可能将有符号整数值转换为无符号整数值吗?
【问题讨论】:
-
我不确定我是否完全理解这个问题。但是 PHP 中没有无符号整数。 PHP 会在它溢出之前自动使用
floats。您的示例值65547(2^16 + 1) 远低于 32 位有符号整数可以存储的值 (2^31 / 0x7FFFFFFF)。 -
PHP 不支持无符号类型。如果该值是一个整数值并且,它可以存储为整数,那么它可以存储为整数。否则它会被存储为浮点数,并且它的一些最低有效数字可能会丢失。
标签: php