Binääritiedosto

Rakenne

Binääritiedostot ajatellaan usein jaksona tavuja, mikä tarkoittaa että binääriluvut eli bitit ovat kahdeksan ryhmissä. Binääritiedostot usein sisältävät tavuja jotka on tarkoitetty näytettäväksi jonain muuna kuin tekstinä. Käännetyt tietokoneohjelmat ovat tyypillinen esimerkki; käännettyjä ohjelmatiedostoja kutsutaan myös binääritiedostoiksi. Mutta binääritiedostot voivat myös sisältää kuvia, ääniä, pakattuja versiota muista tiedostoita yms. lyhyesti, mitä tahansa tiedostoja.
Jotkin binääritiedostot sisältävät headereja, metatiedon osia, joita käytetään tiedoston sisältämän tiedon esittämiseen. Esimerkiksi GIF-tiedosto voi sisältää useita kuvia, ja headereja käytetään erottamaan kuvat toisistaan.

Muokkaminen

Jotta binääritiedostoja voitaisiin lähettää sellaisten järjestelmien läpi jotka eivät hyväksy kaikkia data-arvoja, esim. sähköpostin, binääritiedostot muutetaan usein muotoilemattomaksi tekstiksi. Muuttamisessa on se huono puoli, että useimmiten tiedostokoot kasvavat, kuten myös takaisin binääriksi vastaanottamisen jälkeen. Suurentunut koko saatetaan kohdata alhaisen tason linkityspakkauksessa, kun teksti joka syntyi käännöksessä on entropialtaan paljon suurempi, joten todellinen siirretty data tässä tilanteessa olisi hyvin lähellä alkuperäistä tiedostoa.
Microsoft Windows ja sen oletuskirjastot C:lle ja C++:lle antavat ohjelmoijan päättää onko tiedosto tekstiä vai binääriä kun se avataan; tämä vaikuttaa tavallisiin kirjastokutsuihin kun järjestelmä valitsee käännetäänkö C/C++:n rivinlopetusmerkin (ASCII-rivinvaihtomerkki) vai Windowsin odottaman rivinlopetusmerkki. Unixin kaltainen käyttöjärjestelmissä, C:n ja C++:n standardikirjastot antavat ohjelmoijan määritellä odotetaanko tiedoston sisältävän tekstiä vai binääriä, mutta kirjasto voivat sivuuttaa ja siivuuttavatkin tämän parametrin, koska Unixin kaltaisten rivinlopetusmerkki on sama kuin C/C++:n rivinlopetusmerkki.

Katselu

Katseluun voidaan käyttää heksaeditoria tai erillistä katseluohjelmaa. Näin voidaan nähdä tiedosto jaksona heksadesimaalisia, (tai desimaalisia, binäärisiä, tai ASCII-merkkejä) arvoja vastaaville tavuille binääritiedostossa.
Jos binääritiedosto avataan tekstieditorissa, jokainen kahdeksan bitin ryhmä käännettäisiin merkiksi, ja tulos on luultavimmin käsittämätöntä merkkijonoa. Jos tiedosto avataan jossain muussa ohjelmassa, sillä ohjelmalla on oma tapansa kääntää jokainen tavu: esimerkiksi ohjelma saattaa käsitellä joka tavun numerona jolloin näytetään sarja lukuja 0-255 väliltä, tai jokainen tavu saattaa vastata väriä ja näyttää vastaavan kuvan. Muunlaiset katseluohjelmat vain korvaavat lukukelvottomat merkit väleillä ja näyttävät vain luettavan tekstin. Tätä voidaan käyttää pikaiseen tarkasteluun jotta voitaisiin esim. löytää pelien salasanoja, piilotettua tekstiä ei-tekstitiedostoista ja palauttaa hävinnyttä dataa. Sitä voidaan käyttää jopa epäilyttävien tiedostojen tutkimiseen ei-toivottujen vaikutusten varalta. Jos tiedosto itsessään käsitellään ohjelmana ja suoritetaan, niin käyttöjärjestelmä yrittää tulkita tiedoston sarjoina ohjeita konekielellään.

Tulkinta

Standardit ovat hyvin tärkeitä binääritiedostoille. Esimerkiksi, binääritiedosto tulkittuna ASCII-merkistön pohjalta johtaa siihen tekstin näyttämiseen. Erityinen ohjelma voi tulkita tiedoston eri tavalla, tavu voi olla ääni, pikseli, tai jopa kokonainen sana. Binääritiedoston sisältö sellaisenaan on merkityksetöntä, kunnes algoritmi määrittää mitä tehdään jokaisella bitillä, tavulla, sanalla ja lohkolla. Siten, vain tutkimalla binääriä ja yrittämällä määrittää sen pohjalta mitä se oikeasti tarkoittaa voi johtaa väärään tulokseen. Tätä käytetään steganografiassa, missä algoritmi tulkitsee binääridatan eri tavoin paljastaakseen piilotetun datan. Ilman algoritmia on mahdotonta todistaa että piilotettu data on olemassa.