在其他一些语言中,此问题只是一个简单的强制转换问题。在PHP中没有这样的概念,因为所有整数都具有完全相同的类型(带符号long long或带符号long,取决于体系结构)。但是在某些情况下,您必须这样做。例如。 unpack()
无法读取signed long
小尾数字节顺序,只能是无符号的。
因此,给定虚数 32位无符号整数4294967295
,如何从中获得虚数有符号32位整数的值? (即-1
。)
例如this can be done with pack
/unpack
,但是对我来说,这似乎不是最佳选择。
有更好的方法吗?
32位版本的PHP怎么样? (他们倾向于通过整数溢出来“自动”解决此问题,但我宁愿不使用这种依赖于体系结构的解决方法。Background.)
答案 0 :(得分:0)
例如,可以使用pack
/ unpack
:
$value = 4294967295;
$result = unpack("l", pack('L', $value));
var_dump($result[1]); // -1