在C#中,我可以通过以下代码片段获得字节序类型:
if(BitConverter.IsLittleEndian)
{
// little-endian is used
}
else
{
// big-endian is used
}
我如何在PHP中执行相同操作?
答案 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字节整数)应将其值存储在左侧字节中,而大端系统将其存储在右侧字节中。