Вы путаете вещи:
<?php
$s = "\x01\x00\x00\x00";
$t = "0001"; //same as "\x30\x30\x30\x31"
var_dump(unpack('f', $s));
var_dump(unpack('f', $t));
дает
array(1) {
[1]=>
float(1.4012984643248E-45)
}
array(1) {
[1]=>
float(2.5638762224389E-9)
}
Согласно руководству, эти результаты не гарантируются (модификатор "f" в unpack
будет зависетьна порядковый номер системы).Но одна вещь - это байтовый поток, который на самом деле имеет эти значения, а другая вещь - иметь байтовый поток, который может преобразовываться в «0001», когда рассматривается кодировка ASCII.