我必须使用Qt框架读取由C++应用程序编写的二进制文件。数据由C结构构建,如下所述。字符是从C++应用程序中的QString指针写入的。用PHP读取C++ QString二进制数据
struct panelSystem{
char ipAddress[16];
char netMask[16];
char gateway[16];
char paddingBytes[128];
};
我尝试使用下面的PHP代码来读取多字节字符值:
// Where: $length is a defined number (16 or 128 in this case)
// $data is a binary string read from the binary file
$var = substr($data, $currentOffset, $length);
$currentOffset += $length; // Increment offset by X bytes
$var = trim(str_replace("\0", "\n", $var));
$var = unpack("C*", $var);
$char = '';
foreach ($var as $letter) {
$char .= chr($letter);
}
$var = $char;
不幸的是,结果包括空(\ 0)和/或不相关的字符之前和期望的炭后。
有没有办法将这些字符从QString多字节数组解释或转换为PHP标准字符串(不需要修改原始输入)?
谢谢。