如何在PHP中将有符号整数转换为无符号32位整数

4

我曾尝试在PHP中将有符号整数转换为无符号整数 (32位),但我无法获取无符号整数的绝对值。

例如:

 $value = 65547;
  if (PHP_INT_SIZE == 8)
   {
    if ($value>0x7FFFFFFF)
    {
      $value-=0x100000000;
    }
   }

是否有其他的可能将带符号整数转换为无符号整数?


我不确定我完全理解这个问题。但是在PHP中没有无符号整数。在溢出之前,PHP会自动使用float。而且你的例子值65547(2^16 + 1)远低于32位有符号整数可以存储的范围(2^31 / 0x7FFFFFFF)。 - Tobias K.
PHP不支持无符号类型。如果值是整数值可以存储为整数,则将其存储为整数。否则,它将被存储为浮点数,并且可能会丢失一些最低有效数字。 - axiac
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
2

这并不是实际上将其转换为无符号整数,因为 0x7FFFFFFF 仍然是一个安全的有符号值。我们需要看到当最高位变成大于7时会发生什么。例如 0xFFFFFFFF - Stijn de Witt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,