如何在PHP中获取字节序类型?

时间:2012-03-16 21:46:10

标签: php binary php-5.3 endianness

在C#中,我可以通过以下代码片段获得字节序类型:

if(BitConverter.IsLittleEndian)
{
   // little-endian is used   
}
else
{
   // big-endian is used
}

我如何在PHP中执行相同操作?

2 个答案:

答案 0 :(得分:8)

PHP的字符串类型是一个8位二进制字符串,char序列。它没有字节序。因此,在大多数情况下,字节顺序在PHP中不是问题。

如果您需要以特定的字节顺序准备二进制数据,请使用pack()unpack()函数。

如果您需要确定机器的原生字节序,则可以同样方式使用pack()unpack()

function isLittleEndian() {
    $testint = 0x00FF;
    $p = pack('S', $testint);
    return $testint===current(unpack('v', $p));
}

答案 1 :(得分:8)

function isLittleEndian() {
    return unpack('S',"\x01\x00")[1] === 1;
}

Little-endian系统将最低有效字节存储在最小(最左侧)地址中。因此值1,打包为"短" (2字节整数)应将其值存储在左侧字节中,而大端系统将其存储在右侧字节中。