У меня есть двоичные данные со смесью строк с завершенным нулем и 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, есть ли более простой способ сделать это?