我有混合了 uint32 和空终止字符串的二进制数据。我知道单个数据集的大小(每组数据共享相同的格式),但不知道实际格式。
我一直在使用 unpack 读取具有以下功能的数据:
function read_uint32( $fh ){
$return_value = fread($fh, 4 );
$return_value = unpack( 'L', $return_value );
return $return_value[1];
}
function read_string( $fh ){
do{
$char = fread( $fh, 1 );
$return_string .= $char;
}while( ord( $char ) != 0 );
return substr($return_string, 0, -1);
}
然后基本上尝试这两个函数并查看数据作为字符串是否有意义,如果不是,它可能是一个 int,有没有更简单的方法可以做到这一点?
谢谢。