Sida 1 av 1

PHP: läsa binär byte från fil? (Löst)

Postat: 24 februari 2022, 00:17:40
av Gorgus
Jag sitter med PHP just nu men min gamla hjärna hänger inte med. Försöker köra ett PHP-skript på mitt webbhotell men det går inget vidare. Förhoppningsvis finns det någon här som kan det här?

Jag har en fil som innehåller två bytes och jag vill läsa in den första byten i en variabel. Vi kan säga att värdet på byten är 50. Sen vill jag skriva ut byten som strängen "50". Har försökt med det nedan:

Kod: Markera allt

<?php
  $fh=fopen("data.bin","rb");
  $b=fgetc($fh);
  printf("%d",$b);
  fclose(fh);
?>
Ovanstående skriver bara ut en nolla. Jag har kollat att filen verkligen öppnas. Om jag direkt anger:

Kod: Markera allt

$b=50;
så fungerar det.

Har förstås även googlat och provat med:

Kod: Markera allt

<?php
  $b = file_get_contents('data.bin');
  var_dump($b);
?>
Får då svaret:

Kod: Markera allt

string(2) "" 
vilket jag tycker tyder på att filen inte läses in som "binär" utan som text.

Vad har jag missat? Hur ska jag göra?
(Just nu ska jag nog sova lite...)

Re: PHP: läsa binär byte från fil?

Postat: 24 februari 2022, 08:38:13
av Mickecarlsson
fgetc får en char tillbaka, ord() konverterar den till decimal

Kod: Markera allt

<?php
  $fh=fopen("data.bin","rb");
  $b=fgetc($fh);
  printf("%d",ord($b));
  fclose(fh);
?>

Re: PHP: läsa binär byte från fil?

Postat: 24 februari 2022, 09:06:49
av Gorgus
Tack! :bravo:
Det hade jag aldrig kommit på själv.

Tänk vad man får lära sig.

Re: PHP: läsa binär byte från fil?

Postat: 24 februari 2022, 09:26:24
av MadModder
Annars kan man ju använda
$fh= file_get_contents(filnamn);
så slipper man pyssla med open, fget och close. Och sen använda $fh[0] vid utskriften för att få första byten.
Så blir det bara två rader kod. :)

Re: PHP: läsa binär byte från fil?

Postat: 24 februari 2022, 13:05:07
av Gorgus
Ju mindre det blir, desto bättre.
Nu ser det ut såhär och fungerar lysande.

Kod: Markera allt

 $fh=file_get_contents("data.bin");
 printf("%d",ord($fh[0]));
Tack! :tumupp:

Re: PHP: läsa binär byte från fil?

Postat: 24 februari 2022, 18:11:56
av Micke_s
Eventuellt så är file_get_contents inte helt optimalt för stora filer. Kan vara bättre och göra en file seek istället..tillsammans med fget…

https://www.w3schools.com/php/func_filesystem_fseek.asp

Re: PHP: läsa binär byte från fil?

Postat: 24 februari 2022, 19:08:03
av MadModder
Nej precis. Är det stora filer och man inte ska processa allt, tar det både längre tid och tar upp en massa onödigt minne.

Re: PHP: läsa binär byte från fil?

Postat: 24 februari 2022, 20:17:00
av Gorgus
Fast i vissa fall rekommenderades att läsa in hela filen eftersom det skulle gå fortare att processa filen då.
För mig spelar det ju inte så stor roll eftersom det bara är två bytes det handlar om.