Binarinio failo analizė PHP

Dvejetainių kodų duomenų failai naudojami programuoti moksliškai naudojamose žemo lygio programavimo kalbose, pvz., C, kurios negali būti nuosekliai išverstos į teksto formatą.

Naudojant bet kurią žemo lygio kalbą, kad išsaugotumėte tam tikrą vertę, dvejetainis kodas turi būti naudojamas, kai jį įkeliate į teksto redaktorių, kad galėtumėte įrašyti ar skaityti.

Dvejetainis failas negali būti skaitomas, nes jis yra neapdorotas dvejetainis formatas tokiose kalbose kaip Pascal. Taigi, žiniatinklio valdytojai naudoja PHP, kad skaitytų ir rašytų failus kaip tekstą. Norint gauti vertes, reikia naudoti tam tikrą funkciją.

PHP naudoja unikalią funkciją, pavadintą išpakuoti (). Paskelbus pirmąjį duomenų tipo argumentą, reikia atkurti ir sukurti antrą argumentą kaip eilutę, iš kurios norite gauti duomenis. Atkuriamieji duomenys turi būti simboliniai argumentai.

Naudojant žemo lygio kalbas, pvz., „C“ arba „Pascal“, yra įprasta laikyti duomenis į dvejetainį failą (įrašą, kuris negali būti išverstas į tekstą).

Naudojant C kalbą, jei norite išsaugoti 500 vertę faile, kodas bus toks:

 #include int main () {int val = 500; FILE * fp = fopen („failas“, „wb“); fwrite (& val, sizeof (int), 1, fp); // saugokite „failą“ fclose (fp); grąža 0; } 

Atidarę šį failą su teksto redaktoriumi, galite rasti jį neskaitytu, nes jūsų vertė neišsaugoma kaip tekstas, bet jo dvejetainis.

Tačiau, jei naudojate PHP, dažnai reikia retkarčiais nuskaityti kaip dvejetaines saugomas vertes. Tačiau PHP skaito ir rašo failus kaip tekstą. Norint gauti vertes, reikia naudoti tam tikrą funkciją.

Sprendimas:

Funkcija išpakuoti () gali būti naudojama šiai problemai spręsti. Pirmiausia turite deklaruoti, kokio tipo duomenis norite atkurti, ir tada eilutę, iš kurios norite gauti duomenis.

Išieškotinų duomenų tipas turi būti detalizuotas naudojant atitinkamą simbolį. Pavyzdžiui, norėdami gauti pasirašytą sveikąjį skaičių, naudokite i simbolį.

Taigi, jei mes naudojame failą, kurį išsaugojome aukščiau pateiktame pavyzdyje, čia pateikiamas kodas, kuriuo galima gauti vertę:

    • Svarbios pastabos:
  • Duomenų dydis gali keistis priklausomai nuo procesoriaus architektūros (Sparc, ARM, PowerPC).
    • Programoje, parašytoje C, naudojami įvairaus dydžio sveikieji skaičiai nuo 32 bitų iki 64 bitų.
    • Duomenų išdėstymas gali būti ne tas pats. Kai kurios mašinos saugo duomenis „Big Endian“, kitose - „Little Endian“.
    • Duomenų dydis gali skirtis priklausomai nuo kompiliatoriaus
    • Išpakavimo funkcija grąžina masyvą šiek tiek išsamesniam, kad čia pateikiamas pavyzdys. Mūsų atveju, su viena prašoma verte, mūsų vertė yra 1 masyvo poslinkyje.
  • 32 bitų kompiuterio duomenų tipai
    • Čia yra lentelė, rodanti duomenis, įrašytus pagal 32 bitų kompiuteriui sukurtą C programą:
    • c: c
    • nepasirašyta char : C
    • trumpas : s
    • nepasirašytas trumpas : S
    • int : I
    • nepasirašytas int : L
    • plūdė : f
    • dvigubai : d

Ankstesnis Straipsnis Kitas Straipsnis

Geriausi Patarimai