函数名称:FFI::memcmp()
适用版本:PHP 7.4及更高版本
用法: FFI::memcmp()函数用于比较两个内存块的内容。它接受三个参数:两个内存块的指针和要比较的字节数。
语法:
int FFI::memcmp(FFI\CData $ptr1, FFI\CData $ptr2, int $size): int
参数:
$ptr1
:指向第一个内存块的指针。$ptr2
:指向第二个内存块的指针。$size
:要比较的字节数。
返回值:
- 如果两个内存块的内容相等,则返回0。
- 如果第一个内存块的内容小于第二个内存块,则返回一个负数。
- 如果第一个内存块的内容大于第二个内存块,则返回一个正数。
示例:
$ffi = FFI::cdef("
int memcmp(const void *ptr1, const void *ptr2, size_t num);
", "libc.so.6");
$buffer1 = FFI::new("char[100]");
$buffer2 = FFI::new("char[100]");
FFI::memcpy($buffer1, "Hello", 5);
FFI::memcpy($buffer2, "Hello", 5);
$result = $ffi->memcmp($buffer1, $buffer2, 5);
if ($result == 0) {
echo "两个内存块的内容相等";
} elseif ($result < 0) {
echo "第一个内存块的内容小于第二个内存块";
} else {
echo "第一个内存块的内容大于第二个内存块";
}
在上面的示例中,我们首先定义了一个FFI对象,然后使用cdef()方法定义了一个名为memcmp的C函数。然后,我们创建了两个char类型的内存块,并使用memcpy()方法将字符串"Hello"复制到这两个内存块中。最后,我们调用了memcmp()函数来比较这两个内存块的内容,并根据返回值输出相应的结果。