Vilken binär fil. Skriva och läsa anpassade datatyper till binära filer

Beskrivning och intern presentation av filer

Filerna skiljer sig från varandra. Alla filer som lagras på datorn har speciella attribut, d.v.s. speciella beskrivningsmetoder för att skilja en fil från en annan: 1) namn; storlek 2; 3) datum och tid; 4) ikon.

Varje fil har ett namn - namnet på filen. Namnet på filen beskriver dess innehåll eller föreslår vad den kan användas till. Namnet tilldelas filen när den skapas. Detta gäller alla filer.

Varje fil har en fysisk storlek. Filen tar upp en viss mängd datorminne och en viss mängd diskutrymme.

När filen skapas skriver operativsystemet ut den med datum och tid för skapande. Detta gör att du kan sortera filer efter datum och tid och på så sätt ställa saker i din dator. Datum och tid när filen uppdaterades eller ändrades noteras också.

Varje fil är av en specifik typ, nära relaterad till filikonen som vi ser. Filtypen beror på dess innehåll. Varje program tilldelar en viss typ och en lämplig ikon till det skapade dokumentet.

Filstorleken mäts i byte, precis som mängden minne.

Filstorleken kan vara 0 byte, vilket betyder att filen finns, men inte innehåller någonting. S Den maximala filstorleken är 4 GB. Men sådana enorma filer är mycket sällsynta.

Den inbyggda datorklockan behövs särskilt för att tilldela tid och datum för deras skapande till filer. Detta förklarar hur viktigt det är att ställa klockan korrekt. Det finns också ytterligare attribut för att beskriva filer, såsom systemfiler, dolda filer, skrivskyddade filer, arkivfiler, etc. Operativsystemet kommer att reda ut det på egen hand.

Varje fil har ett unikt index. Indexet innehåller den information som alla processer behöver för att komma åt filen. Bearbetar åtkomstfiler med hjälp av en väldefinierad uppsättning systemanrop och identifierar filen med en sträng av tecken som fungerar som det distinguerade filnamnet. Varje särskiljt namn identifierar unikt en fil, så kärnan översätter det namnet till ett index för filen. Indexet innehåller en tabell med adresser för platsen för filinformationen på disken. Eftersom varje block på disken adresseras med sitt eget nummer, lagrar denna tabell en samling diskblocknummer. För flexibilitet lägger kärnan till bitar till en fil åt gången, vilket gör att filens information kan spridas över hela filsystemet. Men denna layout komplicerar uppgiften att hitta data. Adresstabellen innehåller en lista med blocknummer som innehåller information som hör till filen, men enkla beräkningar visar att den linjära listan med filblock i indexet är svår att hantera. För att den lilla indexstrukturen ska rymma stora filer är adresstabellen för diskblocket inriktad med strukturen.

Text och binära filer

Filer låter användaren läsa stora mängder data direkt från disken utan att skriva in det från tangentbordet. Det finns två huvudtyper av filer: text och binär.

Text filer som består av valfria tecken anropas. De är organiserade i rader som var och en slutar med " slutet av raden". Slutet på själva filen indikeras av symbolen " slutet av filen"... När du skriver information till en textfil, som kan visas med vilken textredigerare som helst, konverteras all data till en teckentyp och lagras i teckenform.

I binärt NS filer information läses och skrivs i form av block av en viss storlek, i vilka data av alla slag och strukturer kan lagras.

För att arbeta med filer används speciella datatyper, kallade strömmar. Ifstream används för att arbeta med filer i läsläge, och ifstream är i skrivläge. Ifstream-strömmen används för att arbeta med filer i både skriv- och läsläge.

I C++-program, när du arbetar med textfiler, måste du inkludera biblioteken ifstream och iostream.

För att skriva data till en textfil måste du: 1) beskriv en variabel av typ ofstream öppen; 3) mata ut information till en fil; 4) se till att stänga filen.

För att läsa data från en textfil måste du:

1) beskriv en variabel av typ ifstream; 2) öppna filen med funktionen öppen; 3) läs information från filen, när du läser varje del av data är det nödvändigt att kontrollera om slutet av filen har nåtts; 4) stäng filen.

Det bör noteras att i alla exemplen ovan öppnar fopen ()-funktionen i lägena "r" och "w" en textfil för läsning respektive skrivning. Detta innebär att vissa textformateringstecken, som vagnretur '\ r', inte kan läsas som separata tecken, oavsett hur de finns i filen, men de finns där. Detta är en funktion i filens textläge. För mer "fint" arbete med innehållet i filer finns ett binärt läge, som representerar filens innehåll som en sekvens av bytes, där alla möjliga kontrollkoder bara är siffror. Det är i detta läge som det är möjligt att ta bort eller lägga till kontrolltecken som inte är tillgängliga i textläge. För att öppna en fil i binärt läge används också fopen ()-funktionen med den sista parametern lika med "rb" respektive "wb", för läsning och skrivning.

En binär fil är vilken fil som helst på din dator. All information på en dator och relaterad media registreras i bitar (därav namnet). Men som jämförelse kan en textfil läsas i läsarna som motsvarar tillägget (de enklaste - även i Anteckningar), men den körbara filen inte. Och även om en txt-fil faktiskt är samma binära fil, menar de körbara filer, såväl som komprimerade data, när de pratar om problemet med att öppna innehållet i binära filer.

Du kommer behöva

  • - Hexredigeringsprogram.

Instruktioner

  • Ladda ner programmet Hex Edit till hårddisken - en filredigerare som representerar deras innehåll i binär form. Öppna programmet genom att dubbelklicka på startfilen. Denna programvara låter dig läsa binärer i realtid, ändra innehåll, lägga till dina egna poster och mycket mer. För att fungera korrekt i den här miljön behöver du veta lite om de allmänna begreppen binärer.
  • Programfönstret skiljer sig inte mycket från den vanliga redigeraren: den välbekanta menyn och panelen med knappar, kroppen på den redigerade filen, bokmärken och statusfältet. Öppna den binära filen via Arkiv-menyn eller genom att klicka på motsvarande ikon på panelen. Den binära filen kommer att visas framför dig som strängar med siffror och bokstäver. Blanda inte ihop dessa tecken med utskrivbara data i textfiler. De kan också redigeras genom att ta bort symboler, men detta tar bort celler med data, delar av filen.
  • Gör ändringar i innehållet i filen. Applikationen kan visa viktiga delar av filen för enklare sökning, och har även flexibel konfiguration av den grafiska visningen av den binära koden. Växla innehållsvyn till ASCII + IBM / OEM-läge för att se programkoden för filen. Om du anger fel rader i filen kanske den inte fungerar korrekt, vilket kan orsaka allvarliga konsekvenser för operativsystemet på den personliga datorn.
  • Spara dina ändringar. Om du inte har någon erfarenhet av att redigera filer på detta sätt, var beredd på att filen inte öppnas och vägrar att fungera efter att ha gjort ändringar. Du kommer med största sannolikhet att förstöra några kopior innan du får jobbet gjort. Försök att inte spara alla ändringar i originalfilen så att dess innehåll förblir oförändrat.
  • poster), är önskan att på något sätt minska det oanvända men upptagna minnesutrymmet ganska förståeligt.

    Speciellt för sådana fall finns det skivor med variantdel.

    Beskrivning av en skiva med en variantdel

    I avsnittet var skiva med variantdel beskriv följande:

    var<имя_записи>: spela in<поле1>: <тип1>; [<поле2>: <тип2>;] [...] fall<поле_переключатель>: <тип>av<варианты1>: (<поле3>: <тип3>; <поле4>: <тип4>; ...); <варианты2>: (<поле5>: <тип5>; <поле6>: <тип6>; ...); [...] slutet;

    Icke-variant del notation (före nyckelordet case) följer samma regler som vanlig notation. Generellt sett kan den icke-varianta delen saknas helt.

    Variant del börjar med det reserverade ordet skiftläge, varefter postens fält indikeras, vilket vidare kommer att fungera som en omkopplare. Som med en vanlig fallbeskrivning måste växeln tillhöra en av de uppräknade typer data (se föreläsning 3). Listan med val kan vara en konstant, ett intervall eller en förening av flera konstanter eller intervall. Den uppsättning fält som måste inkluderas i poststrukturen, om motsvarande alternativ har utförts, omges av parentes.

    Exempel... För att beskriva innehållet i biblioteket behövs följande information:

    Kolumnerna "Titel" och "Publisher" är gemensamma för alla tre alternativen, och resten av fälten beror på typen av tryckt utgåva. För att implementera denna struktur kommer vi att använda ingång med variantdel:

    typ biblio = postnamn, utgivare: sträng; fallpunkt: char av "b": (författare: sträng; år: 0..2004); "n": (data: datum); "m": (år: 1700..2004; månad: 1..12; nummer: heltal); slutet;

    Beroende på värdet på artikelfältet kommer posten att innehålla antingen 4, 5 eller 6 fält.

    Mekanismen för att använda en skiva med en variantdel

    Antalet byte som tilldelats av kompilatorn för skiva med variantdel, bestäms av dess "längsta" version. Kortare uppsättningar av fält från andra varianter tar bara upp en bråkdel av det tilldelade minnet.

    I exemplet ovan är det "längsta" alternativet "b": det kräver 23 byte (21 byte för en sträng och 2 byte för ett heltal). För alternativen "n" och "m" krävs 4 respektive 5 byte (se tabell).

    namn, utgivare Artikel Variant del
    ... "b" författare år
    ... "n" data
    ... "m" år månad siffra
    ... "b" författare år

    Binära filer

    Binära filer lagrar information i den form som den är representerad i datorns minne och är därför obekväm för människor. När man tittar in i en sådan fil är det omöjligt att förstå vad som står i den; det kan inte skapas eller korrigeras manuellt - i någon textredigerare - osv. Men alla dessa olägenheter kompenseras av snabbheten att arbeta med data.

    Textfiler tillhör också strukturer sekventiell åtkomst, och binär - direkt. Det betyder att du när som helst kan referera till vem som helst, inte bara det aktuella elementet.

    Arbeta med binära filer

    All information lagras i datorn i form av 0 och 1, det vill säga i binär form. Binära filer skiljer sig från textfiler endast genom hur de fungerar med dem. Till exempel, om vi skriver siffran "4" till en textfil, så skrivs den som ett tecken, och en byte behövs för att lagra den. Följaktligen kommer filstorleken att vara lika med en byte. Textfilen som innehåller posten "145687" kommer att vara sex byte stor.

    Om vi ​​skriver heltaltalet 145687 i en binär fil, så kommer den att ha en storlek på fyra byte, eftersom det är exakt hur mycket som behövs för att lagra data av typen int. Det vill säga binärer är mer kompakta och i vissa fall lättare att bearbeta.

    Skriva standarddatatyper till binära filer

    För att öppna en binär fil måste du ställa in åtkomstläget till ios :: binär (i vissa C++-kompilatorer - ios :: bin).

    För att skapa en utdatafil, skapa ett objekt:

    ofstream outBinFile ("out.bin", ios :: ut | ios :: binär);

    /* skapande av klassobjekt ofstream ut. bin

    om (! ut_f і 1) // standardkontroll

    Data skrivs med metoden write () som har två parametrar: den första är en pekare till början (adressen till början) av den data som skrivs, den andra är antalet byte som ska skrivas. I det här fallet måste pekaren explicit konverteras till char-typen.

    Exempel 1. Skriv variabler av olika typer till en binär fil:

    ofstream outBinFile ("test.bin", ios :: ut I

    ios:: binär); / ^ skapa klassobjekt av ström och försöker länka den till filen testa. bin i binärt skrivläge * /

    int a - 145687; // deklarera en heltalsvariabel a

    outBinFi le. skriv ((char *) & a, storleken på (a)); / ^ skriv till filen

    variabel a som en ström av bytes, d.v.s. att skriva till en fil den interna representationen av en heltalsvariabel a * / float x - 123,25; // verklig variabeldeklaration NS

    outBinFile .write ((char *) & x, sizeof (x)); / ^ skriv till filen

    variabel NS som en ström av bytes, det vill säga att skriva till en fil med den interna representationen av en heltalsvariabel x * /

    // definiera en symbolisk variabel med och initialisera den med symbolen g outBinFile.write ((char *) & c, sizeof (c));

    // skriv en symbol g att arkivera

    outBinFile.close (); returnera 0;

    Om du öppnar innehållet i test .bin-filen med en textredigerare, kommer det att se ut så här:

    och filstorleken är 9 byte.

    Läsa standarddatatyper från binära filer

    För att öppna en befintlig binär fil för läsning måste du skapa ett objekt:

    ifstream inpBinFile ("inp.bin", ios :: i I ios :: binär);

    /* vi använder en disjunktion av flaggor, vilket indikerar att filen är öppen för läsning i binär form * /

    if (! inpBinFile)

    cout För att läsa data, använd läs ()-funktionen, som har parametrar som liknar funktionen write ().

    #include använder namnutrymme std; int main ()

    ifstream inpBinFile ("test.bin", ios :: i I

    ios:: binär); / / öppna filen för läsning i binär form

    int a; flyta x; char med = "g";

    inpBinFile.read ((char *) & a, sizeof (a));

    // läs en heltalsvariabel inpBinFile.read ((char *) & x, sizeof (x));

    // läs en verklig variabel inpBinFile.read ((char *) & c, sizeof (c));

    // läs en symbolisk variabel

    inpBinFile.close (); cout

    Resultatet av programmet:

    a = 145687 x = 123,25 c = g

    Observera att ingen informationskonvertering sker när du använder skriv- och läsfunktionerna. Den interna representationen av data skrivs till och läses in i filen. Därför gav de två tidigare programmen rätt resultat.

    Skriva och läsa anpassade datatyper till binära filer

    Till skillnad från textfiler skiljer sig inte arbetet med anpassade datatyper med binära filer från standarddatatyper. Metoderna skriv () och läs () används på liknande sätt. Programmeraren behöver bara ange adressen till minnesområdet som ska skrivas och antalet byte som ska skrivas, med hänsyn till att ingen datakonvertering sker, endast den interna representationen av information skrivs och läses.

    När du arbetar med binära filer kan metoderna seekg (), tellg (), seekp (), tellp () användas.

    Exempel 3. Skriv ett program som skriver information om en grupp turister till en binär fil.

    fstream BinFile ("ankety.bin", ios :: in I ios :: ut | ios :: binär);

    Anketa Gruppa =; för (int i = 0; i

    BinFile.write ((char *) & Gruppa [i], sizeof (Anketa)); BinFile.close (); returnera 0;

    Exempel 4. Filen "ankety.bin" innehåller data om en grupp turister, det är nödvändigt att läsa dem och visa dem.

    #include använder namnutrymme std; struct Anketa (

    karaktärsnamn; int ålder;

    strukturerad datatyp Anketa till skärmen * /

    ostream & operatör

    fstream BinFile ("ankety.bin", ios :: in | ios :: ut | ios :: binär); om (! BinFile)

    för (int i = 0; i

    // läser omedelbart alla byte som upptas av typvariabeln Anketa BinFile.read ((char *) & Gruppa [i], sizeof (Anketa));

    BinFile.close (); returnera 0;

    Resultatet av programmet:

    Ivanov, 23 Sidorov, 21 Petrov, 22

    Tryck på valfri tangent för att fortsätta. ... ...

    Utveckla dina egna klasser för att arbeta med filer

    Det är obekvämt att ständigt använda metoderna skriv () och läs (), det är mycket trevligare att kunna använda ">"-operationerna analogt med textfiler. Låt oss ge ett exempel på hur vi implementerar vår klass för att arbeta med binärer.

    använder namnutrymme std;

    struct Anketa // deklarera en struktur för att lagra information

    / * överbelasta ströminsättningsoperationen för användarutdata

    strukturerad datatyp Anketa till skärmen * /

    ostream & operatör

    class outBinaryFile: public av stream / ^ definiera vår egen klass för att arbeta med utdatabinärer. Vi genererar det från klassen för att arbeta med utdatafilströmmar * /

    / * när du beskriver konstruktorn för den genererade klassen, glöm inte att anropa konstruktorn för basklassen och skicka de nödvändiga parametrarna till den * /

    outBinaryFile (char * namn): ofstream (namn, ios :: out I ios :: binär)

    // överbelasta nödvändiga operationer som klassmetoder outBinaryFile & operator

    skriv ((char *) & chislo, sizeof (chislo)); returnera * detta;

    outBinaryFile & operator

    skriv ((char *) & ank, sizeof (ank)); returnera * detta;

    class inpBinaryFile: public if stream / * vi definierar vår klass för att arbeta med indatabinärer. Vi genererar den från klassen för att arbeta med indatafilströmmar * /

    inpBinaryFile (char * namn): ifstream (namn, ios :: i I ios :: binär)

    / * anropa basklasskonstruktorn med de nödvändiga parametrarna,

    tillräckligt för konstruktören av den härledda klassen * /

    // överbelasta nödvändiga operationer

    inpBinaryFile & operator >> (int & chislo)

    läs ((char *) & chislo, sizeof (chislo)); returnera * detta;

    inpBinaryFile & operator >> (Anketa & ank)

    läs ((char *) & ank, sizeof (ank)); returnera * detta;

    int a = 111, b = 112; outBinaryFile outFile ("dannye.bin");

    // öppna filen för läsning

    inpBinaryFile inpFile ("dannye.bin"); if (! inpFile)

    för (int і = 0; i

    inpFile >> a; // läs frågeformuläret från filen

    cout // och visa den på skärmen

    inpFile >> anketa; cout

    Resultatet av programmet:

    Kolya 1990, 582-78-95.

    Tryck på valfri tangent för att fortsätta. ... ...

    1. Är det möjligt att använda en operation i programmet?

    ios :: in I ios :: ut

    • a) ja, i alla fall;
    • b) ja, men bara när du arbetar med textfiler;
    • c) nej i alla fall.
    • 2. Ange rätt alternativ för att öppna en textfil för läsning:
      • a) ifstream inpF ("input.txt", ios :: in);
      • b) ifstream inpF ("input.txt", ios :: input);
      • c) ifstream inpF (ios: in, "input.txt").

    H. Vad kommer att visas som ett resultat av exekvering av följande kod?

    inputFile.get (c);

    nästa - inputFile.peek ();

    om (nästa == EOF)

    • a) innehållet i filen som är associerad med inputFile-strömmen kommer att visas en gång;
    • b) innehållet i filen som är associerad med indatafilströmmen kommer att visas på skärmen ett oändligt antal gånger;
    • c) ingenting kommer att visas på skärmen.
    • 4. Hur många tecken finns i filen?
    • 12 3 4 5 6
    • a) 6;
    • b) 7;
    • vid 11.
    • 5. Vilka metoder kan användas för att fastställa slutet på filen?
    • a) eof ();
    • b) bra ();
    • c) båda dessa metoder.
    • 6. Vad är getline ()-funktionen för?
    • a) läser ett ord från en fil;
    • b) läser hela innehållet i filen;
    • c) läser en rad från en fil.
    • 7. För att skriva/läsa anpassade datatyper till en fil måste du:
      • a) överbelasta operationerna ">>" och "
      • b) att skriva och läsa anpassade datatyper är tillgängliga utan ytterligare åtgärder;
      • c) att skriva och läsa användardefinierade datatyper till en fil är inte möjligt.
    • 8. Vilka funktioner används för att skriva/läsa information i binär form?
    • a) printf / scanf;
    • b) skriva / läsa;
    • c) sätta / få.
    • 1. Skriv ett program som skriver bokstäver i det engelska alfabetet till en fil.
    • 2. Filen input.txt innehåller information från flera textrader. Visa innehållet i denna fil på skärmen, räkna antalet rader i filen.
    • 3. Disketten innehåller filen result.txt med resultaten av kemiska experiment. Skriv ett program som skapar en kopia av denna fil med namnet copy_resylt.txt.
    • 4. Ange filnamnet med tangentbordet. Ta bort alla jämna rader i den angivna filen.
    • 5. Skriv ett program som i en textfil ersätter alla små bokstäver med versaler och vice versa.
    • 6. Den ursprungliga textfilen innehåller siffror separerade med mellanslag. Skapa två nya filer: den första ska bara innehålla jämna nummer och den andra - udda.
    • 7. Reella tal skrivs till filen. Skriv ett program som kasserar bråkdelen av dessa siffror och skriver dem till en ny fil.
    • 8. Textfilen innehåller information om flygbolagets flygningar. Välj från denna information flyg som avgår på eftermiddagen och visa dem på skärmen.
    • 9. Överbelastningsoperatörer >> och
    • 10. Skriv din egen klass för att arbeta med binärer.
    • 11. Skriv en lista med 10 klassdeltagare till en textfil och en binär fil. Jämför dessa filer. Förklara den resulterande skillnaden.
    • 12. Utveckla en klass som skriver information om bilar till en fil (tillverkningsår, fabrikat, färg etc.) till en textfil. I detta fall ersätts varje informationssymbol med sin egen ABO 1-kod. Visa den resulterande filen på skärmen.

    Kontrollfrågor

    • 1. Vilka klasser används för att arbeta med filströmmar?
    • 2. Vilka åtkomstlägen kan användas när man arbetar med filer? Ge exempel.
    • 3. Vilken metod används för att öppna filen? Ge exempel.
    • 4. Vilka operationer är tillgängliga för att arbeta med filer? Vilka funktioner finns för dessa operationer?
    • 5. Vilka metoder låter dig bestämma slutet på filen när du läser information från den? Vad är skillnaden mellan dessa metoder? Ge exempel.
    • 6. Hur kan du läsa variabler av standarddatatyper från textfiler?
    • 7. Kan användardefinierade datatypvariabler läsas från textfiler?
    • 8. Vilka funktioner är avsedda för slumpmässig läsning av information från en fil? Ge exempel.
    • 9. Vilka egenskaper har binärer? Vilka är fördelarna med att använda sådana filer?
    • 10. Vilka funktioner kan användas för att skriva/läsa information till binära filer?
    • 11. Hur läser man variabler av standarddatatyper från en binär fil?
    • 12. Vilka överväganden bör du tänka på när du läser anpassade datatyper från binära filer?
    • "Ivanov", 23), ("Sidorov", 21),

    Många människor har ofta en fråga om hur man öppnar en binär fil. Detta dokument är vilken fil som helst som finns på en persondator. All data som finns på datorer och media som är associerade med den registreras vanligtvis i bitar. Det är från detta ord som namnet kommer från. Om vi ​​ger en enkel textfil som jämförelse blir det inga problem med läsningen. För att göra detta räcker det att ha en vanlig redigerare på din dator, till och med ett anteckningsblock duger. För att öppna en binär fil kan du inte göra med ett enkelt anteckningsblock. Och om vi talar om det faktum att informationen i textfiler är krypterad med samma bitar, menar de vanligtvis körbara dokument när de pratar om att läsa binära filer.

    Instruktioner för åtgärd

    Först måste ett mjukvaruverktyg som heter HexEditor, som är en enkel redigerare för binära filer, installeras på hårddisken på persondatorn. Efter installationen ska programmet öppnas genom att dubbelklicka på ikonen. Detta verktyg låter dig läsa en binär fil i verkligt läge. I det här fallet kan du ändra data i filen, lägga till din egen information osv. För att kunna arbeta i denna editor och modifiera den binära filen måste du åtminstone ha viss kunskap inom detta verksamhetsområde.

    För det andra måste du bekanta dig med dess huvudfönster skiljer sig inte mycket från fönstret i den vanliga redigeraren. Samma knappar, samma meny, dokumenttext, bokmärken och statusfält. Du kan öppna filen av intresse via fliken Arkiv eller genom en speciell knapp som finns i programmet. Efter det kommer du att kunna se den körbara filen, som kommer att visas i form av siffror och bokstäver. Blanda inte ihop de symboler som en binär fil representeras med och de som en vanlig redigerare har. I händelse av att ett beslut fattas om att radera eller ändra någon del av dokumentet, bör det vara underförstått att någon del av det kommer att försvinna eller ändras.

    För det tredje, med hjälp av programmet, kan du försöka ändra vilken del av dokumentet som helst. Som nämnts tidigare visar verktyget filen på ett sätt som förbättrar hur du hittar den del av dokumentet du letar efter. Dessutom har programmet en ganska flexibel inställning. Den kan användas för att ändra den grafiska visningen av den binära koden som den binära filen har. I händelse av att felaktig data matas in i någon del av filen, kan den senare antingen sluta fungera helt, eller så kommer den inte att börja fungera helt korrekt. Hur som helst kommer inmatning av sådan data att orsaka förändringar både i operativsystemet och direkt i själva persondatorn.

    För det fjärde, efter att ha ändrat, tagit bort eller lagt till vissa data i filen, bör du spara resultatet av ditt arbete. I händelse av att du inte har tillräcklig erfarenhet av att redigera filer, bör du vara beredd på inte helt trevliga konsekvenser. Till exempel kan ett dokument sluta fungera efter att ha ändrat data. Tills du börjar förstå det här problemet väl kommer många kopior av filer att skadas. Om du inte är säker på dina möjligheter, bör du inte ändra data själv, särskilt i situationer där du behöver fixa den subbinära filen.