Mikä on tavuvirta oikeastaan?

Voiko joku selittää minulle, mitä tavuvirta todella sisältää? Sisältääkö se tavuja (heksadata) vai binääritietoja vai vain englanninkielisiä kirjaimia? Olen myös hämmentynyt termistä ”raakatiedot”. Jos joku pyysi minua ”kääntämään 4 tavun tiedot”, mitä minun pitäisi olettaa, että data on heksakoodi tai binaarikoodi?

Kommentit

  • Kaksi senttini ei ole vastauksen arvoinen (ja alla on jo hyviä), mutta haluan vain antaa linkit näihin kahteen artikkeliin, jotka todennäköisesti tarjoavat hyvän käsityksen siitä, miten ” raakatiedot ” tulkitaan tarkoittavan jotain (se ei tarkoita ’ ei tarkoita mitään, ellet tiedä, mitä sen on tarkoitus edustaa ja miten se on koodattu / tallennettu) betterexplained.com/articles/… joelonsoftware. com / articles / Unicode.html
  • Mielestäni Java loi tavun välttääkseen c / c ++ ’ -merkkien käyttämisen asioissa, jotka voivat ’ ei ymmärrä merkkinä. hiiltä käytettiin paljon c / c ++: ssa, koska hiilin koko on 1 tavu. Myös unix-laitteet ovat lohko- ja merkkilaitteita. Jos luet merkkilaitteista, saat allekirjoittamattomia merkkejä / tavuja.
  • Tavuvirta on epäselvä. Oktettivirta ei ole.
  • Tiedot voidaan tulkita monilla tasoilla. Alareunassa se ’ on vain sarja päälle / pois-sähkötasoja. Hieman korkeammalla se ’ muodostaa palan tavuja tai, kuten sanot, tavuvirran . Vielä korkeammalla alat tulkita raakatietoja. Tavut voidaan tulkita tekstiksi monin tavoin (koodauksina). Myös kokonaisluvut (iso tai pieni endiaani). Voit jopa mennä korkeammalle. Sinulla on zip-tiedosto. Tämä zip-tiedosto on eilisen varmuuskopio. Ja niin edelleen. Ongelmana on, että tarkka taso on usein implisiittistä eikä sitä tehdä selväksi, ja tämä voi olla hämmentävää.

Vastaa

Tavuvirrat sisältävät hyvin tavuja. Hajotettuna todellisuuteen se on 8 bittiä, jotka koostuvat 1: stä ja 0: sta. Jos se edustaisi lukua, se olisi mikä tahansa luku 0-255 (mikä, voin lisätä, ei ole sattumaa, miksi IP-osoitteen 4 numeroa vaihtelee aina 0-255). Tavu virrat ovat yleensä hienostuneita rajapintoja, jotka on tarkoitettu piilottamaan taustalla oleva perustavu-taulukko, jota käytetään pyöreän puskurin pitämiseen (täytät puskurin ja odotat, että joku tyhjentää sen, jolloin se yksinkertaisesti täyttää puskurin uudelleen).

Mitä hittoa se edustaa? No, se voi edustaa tekstitiedostoa, kuvaa tai suoraa videovirtaa. Mikä se on on , riippuu täysin kontekstista, joka lukee sitä. Hex-esitys on toinen tapa sanoa sama asia, vaikka tavuja on joskus helpompi hallita niiden heksadesimaalisen kuvan kuin numeroiden suhteen, mutta se on sama asia.

Minusta ei välitä, mitä tiedot edustavat kokonaisuutena. Esimerkiksi, jos halusin muuntaa kuvan mustavalkoiseksi versioksi, saatan sanoa lukevan kuvan raakatiedot ja jokaista 3 tavua kohden (mikä tosiasiassa edustaisi punaista väriä, vihreää ja sininen väri), lisää sen numeroarvo ja jaa 3: lla, kirjoita sitten arvo 3 kertaa. Pohjimmiltaan mitä teen, on keskiarvo pikselin punaiset, vihreät ja siniset arvot ja tehdä harmaasta vastaava pikseli siitä Kun kuitenkin puhut operaatioiden suorittamisesta tiedoille ”tavu tavu” -tasolla, et välitä niin sanotusta kokonaiskuvasta.

Tai ehkä haluat tallentaa tiedoston tietokantaan, mutta se pyytää sinua lisäämään sen ”raakatiedot” blob-tietotyyppiin. Tämä tarkoittaa yksinkertaisesti tiedoston tietojen muuntamista suuriksi tavuiksi, joita tietokanta voi ymmärtää ja hallita. Tulet huomaamaan, että kun haet kyseisen arvon tietokannasta, se on yksinkertaisesti yksi suuri tavutaulukko, kuten alun perin annoit tietokannalle. Jos nämä tiedot olivat tiedostoja, sinun, ohjelmoijan, on tulkittava tämä tavu uudelleen tiedot ikään kuin lukisit tiedostoa tavua kerrallaan.

Jos joku pyytää sinua ”kääntämään 4 tavun tiedot”, oletan, että se viittaa numeroiden big-endian vs. little-endian tulkintaan. , joka kirjoittaa numerot suurimmalla tai vähiten merkitsevällä tavulla. Ei ole väliä, onko luku esitetty bigendiana vai little-endiana, vain että kaikki numeroa lukevat järjestelmät tulkitsevat sitä johdonmukaisesti.

Tämä ei ole sanoa, että todellinen lukuesitys (tai kuusikulmaesitys tälle asialle) muuttuu, yksinkertaisesti, että järjestys, jossa nämä 4 tavua tekevät numeron, tulisi kääntää. Joten sano, että sinulla on 0x01, 0x02, 0x03 ja 0x04.Jos haluat kääntää nämä, sinulla on sen sijaan 0x04, 0x03, 0x02, 0x01. Järjestelmä luultavasti lukisi nämä 4 tavua päinvastaisessa järjestyksessä ja koska olet jo kääntänyt sen, arvon tulkitaan olevan sama kuin mikä oli tarkoitettu raakatiedoissa.

Toivon, että se selittää sen!

Kommentit

  • Kaikki on hyvin ..! Voisitteko tarkentaa vastauksen, joka koskee ” raakatietoja ”?
  • @ user2720323 Okei, muokattu selittämään paremmin ” raakatiedot. ” 🙂
  • Yksi asia pitää mielessä … kaikki tiedot ovat yksinkertaisesti kokoelma tavua. Näiden tavujen merkitys määritetään jonkinlaisella metatiedolla (tiedostotunniste, tietokantakenttä jne.). Kuvatiedosto voidaan tulkita ASCII-tiedostoksi ja päinvastoin. Teksti tai kuva saattaa olla merkityksetön, mutta se on silti mahdollista. (Derp … minun olisi pitänyt lukea seuraavat vastaukset)
  • @kevincline Yritä arvostaa sitä, että yritän välittää idean ’. Prioriteettini ei ole ’ t kirjoittaa tarkkaa algoritmia. Jos haluat olla tarkempi, ’ punnitset punaiset vihreät ja siniset arvot sen mukaan, mitä ihmissilmä voi havaita.

Vastaus

Tavu on yksinkertaisesti tiedon yksikkö – se voi olla mitä tahansa. Tavu itsessään ei tarkoita mitään, sinun on liitettävä siihen jonkinlainen merkitys.

Joten laajentaaksesi sitä –

Sisältääkö ne tavuja (heksadesimaalidataa) vai binääritietoja vai vain englanninkielisiä kirjaimia?

Heksadata on sama kuin binaaritieto. Se on vain erilainen tapa näyttää tiedot. Esimerkiksi 0x41 = 0b01000001 = ”A” = 65 (desimaali). Englanninkieliset kirjaimet olisivat vain osan siitä.

Jos joku pyysi minua ”kääntämään 4 tavun tiedot”, mitä minun pitäisi olettaa, että tiedot ovat hex-koodi tai binaarikoodi?

Koska hex on vain esitys tiedoista, sillä ei ole väliä miten ajattelet Jos sinulla on tietoja 0x65 0x66 0x67 0x68, sen kääntämiseksi saat 0x68 0x67 0x66 0x65. Jos katsot näitä tietoja merkkiä, sinulla olisi alun perin A B C D, mutta nyt sinulla on D C B A.

Takaisin tavuvirtaan – se ”vain tietosarja. Sinun on tiedettävä, mitä tiedot edustavat, jotta voit käyttää niitä. Jos luemme tekstitiedoston, tavun virta, jonka saisit lukiessasi tiedostoa, olisi vain jonkinlaisia merkkejä. Suoritettavassa tiedostossa olisi joukko tulostamattomia merkkejä, minkä vuoksi sitä kutsutaan binaariseksi tiedostoksi. Suoritettavaa tiedostoa on selvästikin mahdollista avata tekstieditorissa, mutta se ei tee mitään hyödyllistä.

Kommentit

  • +1 mutta binaarisen korostus lattibitissä näyttää väärältä. ” binaaritiedot ” sisältää usein tulostamattomia merkkejä, mutta ne ’ kutsutaan ” binaarinen ”, koska se ’ koostuu binaarisista numeroista, ei siksi, että se sisältää tulostamattomia merkkejä . Ymmärrän, että ’ käytät ” -binaarista ” vastakohtana tulostettavalle ” teksti ” data, mutta mielestäni tämä voi sekoittaa OP: n entisestään.
  • Minulla on yksi kysymys peruutuksesta. Jos tiedostossa on kokonaisluku (32 bittiä) 325487, kuinka voin kääntää tämän 4 tavun kokonaisluvun? vastaavasti minulla on sana (” hai kuinka voit ”), kuinka kääntää tämä merkkijono olettamalla jokainen merkki tavuksi. / li>
  • @ user2720323 int reverseX = ((x & 0xFF000000) >> 24) + ((x & 0x00FF0000) >> 8) + ((x & 0x0000FF00) << 8) + ((x & 0x000000FF) << 24); Tämä kirjaimellisesti vie jokaisen tavun, siirtää sen oikeaan asentoon ja yhdistää muiden kanssa.

Vastaus

Tavu-virta on järjestetty tavusarja. On ensimmäinen tavu, jolla ei ole edeltäjää. Sen seuraaja on toinen tavu jne. Nykyään tavun ymmärretään yleisesti muodostuvan kahdeksasta bitistä. Jos haluamme olla tarkempia, käytämme termejä oktettivirta ja oktetti . Vielä on olemassa tietokoneita, joissa on tavuja, joiden leveys ei ole kahdeksan bittiä.

Heksadesimaali on tapa kirjoittaa lukuja ja toimii painettuna esityksenä binaaritiedoille. Heksadesimaali on itse asiassa tekstiä Esimerkiksi heksadesimaaliarvo FE saattaa edustaa tavua: bitit 11111110, joilla on desimaaliarvo 255.FE on kuitenkin oikeastaan merkkijono, joka koostuu merkeistä F ja E, mikä edellyttää kaksi tavua US-ASCII- tai ISO-646-merkistöissä! Nämä kaksi tavua ovat FE on ja yksi tavu arvolla 254 on se, mitä FE edustaa , painettuna merkintänä.

Jos kuvataan viestintäkanava, tiedostokahva tai jokin muu tällainen laite koska tavuvirta on mukana eikä mitään muuta tietoa anneta, se tarkoittaa melkein varmasti ei sitä, että tavut esitetään heksadesimaalisena tekstinä , niin että jokainen abstrakti tavu virrassa vaatii kaksi fyysistä tavua.

Ja raakadata tarkoittaa yksinkertaisesti bittiä, joiden ei tulkita olevan mitään rakennetta vain ”bittijoukon” lisäksi. Raakatiedoilla on yleensä rakenne ja ne edustavat jotain, mutta kun katsomme sitä raakatiedona, joko jätämme huomiotta tulkinnan tällä hetkellä (esimerkiksi tarkastelemme tietotyypin raakaa esitystä varmistaaksemme sen oikeellisuuden alaspäin) bittitason yksityiskohtiin), tai tulkinta ei ole käytettävissä (meillä on joitain tietoja, mutta emme ymmärrä tietojen rakennetta ja mitä ne edustavat).

Kommentit

  • PDP-10: llä oli ohjeet käsitellä erikokoisia tavuja. Yleisin oli seitsemän bitin ASCII, jota seurasi kuusibittisiä merkkejä.

Vastaus

Tavu on 8 bittiä. Bitti on 0 tai 1. ”Raakatiedot” ovat vain yhden tavun virta toisensa jälkeen. Tavu-virta voi tulla tiedostosta, verkkoyhteydestä, sarjoitetusta objektista, satunnaislukugeneraattorista jne.

  • Tavu voidaan näyttää useilla tavoilla: binaarinen (01110110) , heksas = heksadesimaali (7C), oktaali (0271) tai desimaali (215). Kaikissa tapauksissa enimmäisarvo on 255 (perus 10).

  • Joskus tavut määritetään merkeille, kuten ascii. Kirjoita ”ascii” unix-komentoriville ja saat suuren taulukon, joka kartoittaa tavuarvot 0-255 tai (0-FF hex) liittyvään merkkiin. Esimerkiksi väli on x20 ja ”A” on x40 Huomaa, että jotkut tavuarvot kartoittavat hallitsemaan merkkejä eikä niitä voi tulostaa. Mutta tavut itse eivät ole ”t” merkkejä – ne ovat vain nippu bittejä. Numero.

  • ”kääntämällä 4 tavua” olisi otettava joitain tavuja 123 42 231 0 ja käännettävä järjestys – 0 231 42 123. Sovellettuna tavuhöyryyn, I ”Luin luultavasti 4 tavua, käännä ne taaksepäin, lue seuraavat 4 tavua jne.

(BTW: llä ongelma on merkityksellinen, koska jos haluat edustaa suurempaa lukua kuin 255 tavuina, sinun on käytettävä useampaa kuin yhtä tavua. Mutta sitten kysytään, tuleeko ”suurin” tavu ensin vai viimeinen? Sitä kutsutaan suureksi endiiksi vai pieneksi endiaksi – etsimme lisää taustaa miksi on hyödyllistä sekoittaa tavuja raaassa tavuvirrassa.)

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *