Анализиране на двоичен файл в PHP

Файловете с двоични кодове се използват за програмиране в научно използвани езици за програмиране на ниско ниво, като C, които не могат да бъдат последователно преведени в текстов формат.

Използвайки всеки език на ниско ниво за съхраняване на дадена стойност, двоичният код трябва да се използва, след като го заредите в текстов редактор, за да го запишете или прочетете.

Двоичен файл не може да се чете, тъй като е в суров двоичен формат на езици като Pascal. Следователно уебмастърите използват PHP, за да четат и пишат файловете като текст. За извличане на вашите стойности трябва да се използва специфична функция.

PHP използва уникална функция, наречена unpack (). След като бъде обявен първият аргумент за тип данни, трябва да възстановите и създадете втори аргумент като низ, от който искате да извлечете данните. Възстановимите данни трябва да бъдат в символни аргументи.

Когато се използват езици от ниско ниво като C или Pascal, обичайната процедура е да се съхраняват данни в двоичен файл (запис, който не може да се преведе в текст).

Използвайки езика C, ако искате да запишете стойността 500 във файл, кодът ще бъде както следва:

 #include int main () {int val = 500; ФАЙЛ * fp = fopen ("файл", "wb"); fwrite (& val, sizeof (int), 1, fp); // съхраняваме val в "файл" fclose (fp); return 0; } 

Когато отваряте този конкретен файл с текстов редактор, може да го намерите за четене, тъй като стойността ви не е записана като текст, а в двоичен необработен формат.

Но, ако използвате PHP, често е необходимо да изтегляте стойности, съхранени като двоични от време на време. Въпреки това, PHP чете и пише във файловете като текст. За извличане на вашите стойности трябва да се използва специфична функция.

Решението:

Функцията unpack () може да се използва за решаване на този проблем. Трябва първо да декларирате типа данни, които искате да възстановите, и след това низа, от който искате да изтеглите данните.

Видът на данните, които трябва да бъдат възстановени, трябва да бъде подробно описан с помощта на съответния символ. Например, за да извлечете подписано цяло число, използвайте символа i .

Така че, ако използваме файла, който сме запазили в примера по-горе, тук е кодът за извличане на нашата стойност:

    • Важни бележки:
  • Размерът на данните може да се променя в зависимост от архитектурата на процесора (Sparc, ARM, PowerPC).
    • Програмата, написана на C, използва цели числа с различни размери от 32 до 64 бита.
    • Подреждането на данните може да не е едно и също. Някои машини съхраняват данни в Big Endian, други в Little Endian.
    • Размерът на данните може да варира в зависимост от компилатора
    • Функцията unpack връща масив малко по-сложен, отколкото този, даден като пример тук. В нашия случай, с една заявена стойност, нашата стойност е в отместване 1 на масива.
  • Типове данни за 32-битов компютър
    • Ето таблица, показваща данните, записани от C програма, компилирана за 32-битов компютър:
    • char : c
    • Неподписан символ : C
    • кратко : s
    • неподписан кратко : S
    • int : I
    • неподписан int : L
    • поплавък : f
    • двойни : d

Предишна Статия Следваща Статия

Топ Съвети