Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] operacje na plikach binarnych
Forum PHP.pl > Forum > Przedszkole
boya
Witam

Mam plik binarny i chcialem z niego wyciagnac np. pierwsze cztery bajty a pozniej wyciagac sobie z niego zmienne przedzialami np od 16 bajtu do 25... czy da sie to jakos rozwiazac za pomoca php ? Jezeli tak prosze o info lub wskazowki gdzie mozna pokopac za wiedza...
pozdr.

forumowa opcja szukaj jest uboga w tym zakresie
mike
Dla nieczytających manuala jest forum Przedszkole tongue.gif
Dlaczego tu właśnie nie założyłeś tego wątku? Przenoszę z php.

fopen
Cytat
Windows oferuje flagę ('t') konwertującą tryb tekstowy, która przezroczyście przekłada \n na \r\n kiedy pracujesz z plikiem. Dla kontrastu, możesz także uzyć 'b' aby wymusić tryb binarny, wtedy nie będzie konwertować twoich danych. Aby użyć tych flag, wstaw 'b' lub 't' jako ostatni znak w parametrze tryb.

A potem fread
boya
tyle to i ja już wiem... aarambo.gif
jak wyciagnacz pliku od-do bajtow
heaven
odczytanie pierwszych 4 bajtow
  1. <?php
  2. fseek($fp,0);
  3. $dane = fread($fp,4);
  4. ?>

od 16 do 25 bajta
  1. <?php
  2. fseek($fp,15);
  3. $dane = fread($fp,10);
  4. ?>
mike
To czego nie wiesz?
Jak z pliku czytać?

Przechodzisz do pozycji 15 i czytasz 10 bajtów.
Masz przeczytane bajty 16-25.

Wszystkie funkcje masz w manualu opisane po polsku, więc o co chodzi?

---added---
O widzisz, gotowca dostałeś od ~heaven
boya
heaven dzieki ! ...pewnie dlatego nie jest moderatorem jak Ty...
dziekuje wam i pozdrawiam

jeszcze jedna sprawa... spotkał się ktoś z funkcją bitshift-u ?
chodzi o zamiane pierwszych dwoch bajttow z drugimi dwoma kolejnoscia


rozwiazanie pytania wyzej:
Kod
function Read32BitLittleEndianIntFromBinaryFile($FileHandle)
{
  $BinaryData = fread($FileHandle, 4);
  $UnpackedData = unpack("V", $BinaryData);
  return $UnpackedData[1];
}
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.