Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中获取endianness类型?_Php_Binary_Php 5.3_Endianness - Fatal编程技术网

如何在PHP中获取endianness类型?

如何在PHP中获取endianness类型?,php,binary,php-5.3,endianness,Php,Binary,Php 5.3,Endianness,在C#中,我可以通过以下代码片段获得endianness类型: if(BitConverter.IsLittleEndian) { // little-endian is used } else { // big-endian is used } 如何在PHP中执行相同的操作?PHP的字符串类型是8位二进制字符串,即char序列。它没有持久性。因此,在PHP中,endianness在很大程度上不是一个问题 如果需要准备特定尾数的二进制数据,请使用和函数 如果需要确定机器的本机

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

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

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

PHP的字符串类型是8位二进制字符串,即
char
序列。它没有持久性。因此,在PHP中,endianness在很大程度上不是一个问题

如果需要准备特定尾数的二进制数据,请使用和函数

如果需要确定机器的本机端号,可以用同样的方法使用
pack()
unpack()

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

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

检测具体内容的尾端性?例如,在使用socket\u send($socket,$data,$len)时。使用哪种尾数?
$data
是一个8位二进制字符串,一个
char
序列(与所有php字符串一样)。它没有持久性。如果需要准备特定尾数的二进制数据,请使用和函数。如果要获取当前机器的尾数顺序,可以使用
pack()
和格式选项
l
l
以及常量输入并计算结果。感谢您的回答。那么,在哪里可以找到返回false的机器呢?:-)PowerPC应返回false。如果你从未在bigendian机器上运行过,为什么要问这个问题?因为我不知道我的客户在使用什么机器。
function isLittleEndian() {
    return unpack('S',"\x01\x00")[1] === 1;
}