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

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
Gorgus
Inlägg: 1996
Blev medlem: 24 april 2006, 22:42:42
Ort: Eskilstuna
Kontakt:

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

Inlägg 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...)
Senast redigerad av Gorgus 7 mars 2022, 15:27:37, redigerad totalt 1 gång.
Användarvisningsbild
Mickecarlsson
EF Sponsor
Inlägg: 3724
Blev medlem: 15 april 2017, 18:06:15
Ort: Malmö
Kontakt:

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

Inlägg 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);
?>
Användarvisningsbild
Gorgus
Inlägg: 1996
Blev medlem: 24 april 2006, 22:42:42
Ort: Eskilstuna
Kontakt:

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

Inlägg av Gorgus »

Tack! :bravo:
Det hade jag aldrig kommit på själv.

Tänk vad man får lära sig.
Användarvisningsbild
MadModder
Co Admin
Inlägg: 29878
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

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

Inlägg 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. :)
Användarvisningsbild
Gorgus
Inlägg: 1996
Blev medlem: 24 april 2006, 22:42:42
Ort: Eskilstuna
Kontakt:

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

Inlägg 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:
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

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

Inlägg 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
Användarvisningsbild
MadModder
Co Admin
Inlägg: 29878
Blev medlem: 6 september 2003, 13:32:07
Ort: MadLand (Enköping)
Kontakt:

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

Inlägg 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.
Användarvisningsbild
Gorgus
Inlägg: 1996
Blev medlem: 24 april 2006, 22:42:42
Ort: Eskilstuna
Kontakt:

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

Inlägg 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.
Skriv svar