如果我要在“大端”机器上运行这个PHP代码,我会得到什么?
$v = 0x12345678;
for ($i = 0 ; $i < 4 ; $i++) {
echo "$i: " . dechex(($v>>($i*8))&0xff) . "\n";
}
是“A”:
0: 78
1: 56
2: 34
3: 12
或者是“B”:
0: 12
1: 34
2: 56
3: 78
我问的是桌面计算机几乎总是小端,而且PHP总是在内部使用硬件的表示(其中一个最有问题的缺点)它仍然打印出“A”,它本质上是大端的记住。
答案 0 :(得分:0)
首先,我没有Big endian机器来测试它。 Burt基于理论,如果我们布局$ v = 0x12345678;在记忆中 然后在littel endian中变成:
字节0:78 字节1:56 字节2:34 字节3:12
但是在大端,它变成了:
byte0:12 byte1:34 byte2:56 byte3:78
所以你应该在小端看到A,在大端看到B.
此外,如果你想模拟bigendian行为,你可以尝试htons函数,它将短数从主机架构转换为网络字节顺序,并且总是大端。