In C# I can get the endianness type by this code snippet:
if(BitConverter.IsLittleEndian)
{
// little-endian is used
}
else
{
// big-endian is used
}
How can I do the same in PHP?
In C# I can get the endianness type by this code snippet:
if(BitConverter.IsLittleEndian)
{
// little-endian is used
}
else
{
// big-endian is used
}
How can I do the same in PHP?
PHP's string type is an 8-bit binary string, a char
sequence. It has no endianness. Thus for the most part endianness is a non-issue in PHP.
If you need to prepare binary data in a specific endianness, use the pack()
and unpack()
functions.
If you need to determine the machine's native endianness, you can use pack()
and unpack()
in the same way.
function isLittleEndian() {
$testint = 0x00FF;
$p = pack('S', $testint);
return $testint===current(unpack('v', $p));
}
function isLittleEndian() {
return unpack('S',"\x01\x00")[1] === 1;
}
Little-endian systems store the least significant byte in the smallest (left-most) address. Thus the value 1
, packed as a "short" (2-byte integer) should have its value stored in the left byte, whereas a big-endian system would store it in the right byte.
© 2022 - 2024 — McMap. All rights reserved.
$data
is an 8-bit binary string, achar
sequence (like all php strings). It has no endianness. If you need to prepare binary data in a specific endianness, use thepack()
andunpack()
functions. – Wrenniepack()
with the format optionl
orL
and a constant input and evaluate the result. – Bump