Läsa binärdata från fil i PHP, hur?

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jan 2010

Läsa binärdata från fil i PHP, hur?

Jag sitter och leker lite med PHP och skapar filer. Det funkar fint, men jag vet inte hur jag läser ut datan sen på ett bra sätt.
Jag får bara tillbaks massa arrayer från fread() och unpack() hjälper mig inte (eller så gör jag fel, antagligen)

Anta att jag läser en fil såhär:
$fp = fopen($myfile,'rb');

Om jag vill läsa ut 4 bytes från filen till en unsigned long, d.v.s. ett tal. Hur gör jag? Jag har googlat mig tokig(are) snart..

Stort tack på förhand!

Dator: MB: ASUS H87M-E mATX | CPU: Intel Core i5 4670 3.4 GHz (Haswell) | RAM: Corsair 8GB 1600Mhz | GPU: - | Chassi: Fractal Design Mini | PSU: be quiet! Pure Power L8 530W 80+ Bronze Modulär | Optisk: ASUS BW-12B1ST Blu-Ray/DVD brännare | CPU-kylare: Noctua NH-U9B SE2 | Operativ: Windows 10
Övrigt: Nintendo Switch, Nintendo WiiU, Nintendo New 3DS, NES, Famicom AV, Famicom Disk System, PS3, AppleTV4, Synology NAS DS415+, iPhoneSE 64GB, LG 55UH664V

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Aug 2010

Det borde gå att använda fread för att läsa valfritt antal bytes ur filen, och därefter använda sscanf för att tolka indatan. Alternativt kan du tolka hela rader på en gång med fscanf.

Så något i stil med (det verkar inte gå att specificera long i PHP, förmodligen eftersom PHP bara har en datatyp för alla typer av heltal):

$fp = fopen($myfile,'rb'); $contents = fread($fp, 4); $myNumber = sprintf('%u', $contents); echo $myNumber;

Du får gärna citera eller nämna mig (@ToJa92) om du svarar på något jag skrivit.