我正在尝试将二进制字符串解释为无符号大端整数,正如她在此处的说明:http://mimesniff.spec.whatwg.org/#matches-the-signature-for-mp4(第4点)
我不太确定我需要在这做什么,但这是我的尝试:
// ONE
$box_size = substr( $sequence, 0, 4 );
$box_size = pack( 'C*', $box_size[0], $box_size[1], $box_size[2], $box_size[3] );
$box_size = unpack( 'N*', $box_size );
// TWO
$box_size = substr( $sequence, 0, 4 );
$box_size = array_map( 'ord', str_split( $box_size ) );
// THREE
$box_size = substr( $sequence, 0, 4 );
$box_size = bindec( $box_size );
// FOUR
$box_size = substr( $sequence, 0, 4);
$box_size = (int) $box_size;
我没有运气,老实说我不确定结果应该是什么..有谁理解这个?我想我可能会打包并打开包装。
答案 0 :(得分:3)
我会继续发表评论作为答案然后......
要解压缩将某些内容的“紧凑”位表示形式转换为本机类型,只需使用带有正确参数的unpack
来表示要解包的位的类型。在你的情况下:
$unpacked = unpack('N', $unsignedBigEndianInteger);
$int = $unpacked[1];
这使PHP读取字节流,假设它代表一个无符号大端,并将其转换为PHP本机整数。
记住:
pack
:“大型原生类型”→挤入字节表示unpack
:压缩字节表示→“大型原生类型”