Tuesday 8 August 2017

Utökade Ascii Koder Binära Alternativ


Ascii vs binära filer Inledning De flesta klassificerar filer i två kategorier: binära filer och ASCII-filer (text). Du har faktiskt arbetat med båda. Alla program du skriver (CCPerlHTML) är nästan säkert en ASCII-fil. En ASCII-fil definieras som en fil som består av ASCII-tecken. Det skapas vanligen genom att använda en textredigerare som emacs, pico, vi, anteckningsblock etc. Det finns mer avancerade redaktörer där ute för att skriva kod, men de kan inte alltid spara det som ASCII. Som en sida verkar ASCII-textfiler mycket amerikansk-centrerade. Tillsammans står A i ASCII för amerikanska. Men USA verkar dominera mjukvarumarknaden, och så effektivt är det en internationell standard. Datavetenskap handlar om att skapa goda abstraktioner. Ibland lyckas det och ibland gör det inte. Goda abstraktioner handlar om att presentera en bild av världen som användaren kan använda. En av de mest framgångsrika abstraktionerna är textredigeraren. När du skriver ett program och skriver in kommentarer, är det svårt att föreställa sig att denna information inte lagras som tecken. Självklart, om någon verkligen sa Kom igen, tror du inte verkligen att de karaktärerna sparas som tecken, vet du inte om ASCII-koden, då är du övertygad om att ASCIItext-filer verkligen lagras som 0s och 1s. Men det är svårt att tänka på det sättet. ASCII-filer lagras verkligen som 1s och 0s. Men vad betyder det att den lagras som 1s och 0s-filer lagras på skivor, och skivor har något sätt att representera 1s och 0s. Vi kallar bara dem 1s och 0s eftersom det också är en abstraktion. Oavsett sätt används för att lagra 0 och 1 på en disk, bryr vi oss inte om vi kan tänka på dem på så sätt. I själva verket är ASCII-filer i princip binära filer, eftersom de lagrar binära nummer. Det vill säga, ASCII-filer lagrar 0s och 1s. Skillnaden mellan ASCII och binära filer En ASCII-fil är en binär fil som lagrar ASCII-koder. Minns att en ASCII-kod är en 7-bitars kod lagrad i en byte. För att vara mer specifikt finns det 128 olika ASCII-koder, vilket innebär att endast 7 bitar behövs för att representera ett ASCII-tecken. Eftersom minsta arbetbara storlek är 1 byte är dock de 7 bitarna de 7 bitarna med vilken bit som helst. Den viktigaste biten är 0. Det betyder att i någon ASCII-fil slipper du 18 bitar. I synnerhet används inte den mest signifikanta biten av varje byte. Även om ASCII-filer är binära filer, behandlar vissa personer dem som olika typer av filer. Jag tycker om att tänka på ASCII-filer som speciella typer av binära filer. De är binära filer där varje byte skrivs i ASCII-kod. En fullständig, generell binärfil har inga sådana begränsningar. Vilken som helst av 256 bitmönstren kan användas i vilken bit som helst av en binär fil. Vi arbetar hela tiden med binära filer. Executables, objektfiler, bildfiler, ljudfiler och många filformat är binära filer. Vad som gör dem binära är bara det faktum att varje bit av en binär fil kan vara en av 256 bitmönster. De är inte begränsade till ASCII-koderna. Exempel på ASCII-filer Anta att du redigerar en textfil med en textredigerare. Eftersom du använder en textredigerare redigerar du ganska mycket en ASCII-fil. I den här helt nya filen skriver du in katt. Det vill säga bokstäverna c, då a, då t. Därefter sparar du filen och avslutar. Vad händer För tillfället bekymrar vi oss inte om mekanismen för vad det innebär att öppna en fil, ändra den och stänga den. I stället var berörda av ASCII-kodningen. Om du tittar upp ett ASCII-bord, kommer du att upptäcka ASCII-koden för 0x63, 0x61, 0x74 (0x indikerar bara att värdena är hexadecimala, istället för decimalbasis 10). Här är hur det ser ut: Varje gång du skriver in ett ASCII-tecken och sparar det skrivs en hel byte som motsvarar den tecknen. Detta inkluderar skiljetecken, mellanslag och så vidare. Jag minns en gång en elev har använt 100 stjärnor i sina kommentarer, och dessa asterisker verkade överallt. Varje stjärna använde en byte på filen. Vi räddade tusentals byte från sina filer genom att ta bort kommentarer, mestadels asteriskerna, vilket gjorde filen så fin, men lade inte till tydligheten. Således, när du skriver en c, sparas den som 0110 0011 till en fil. Nu ibland kastar en textredigerare in tecken du inte kan förvänta dig. Till exempel insisterar vissa redaktörer på att varje rad slutar med en ny linje. Vad betyder det att jag en gång frågades av en elev, vad händer om slutet av raden inte har en nyline karaktär. Den här studenten trodde att filerna sparades som två-dimensioner (huruvida studenten insåg ir eller ej). Han visste inte att den var sparad som en dimensionell matris. Han insåg inte att den nya karaktären definierar slutet av raden. Utan den nya linjen har du inte nått slutet av raden. Den enda platsen en fil kan saknas en ny linje i slutet av raden är den sista raden. Vissa redaktörer tillåter den sista raden att sluta i något förutom en newline-karaktär. Vissa redaktörer lägger till en ny linje i slutet av varje fil. Tyvärr är inte newline-karaktären den universella standarden. Det är vanligt att använda newline-tecken på UNIX-filer, men i Windows är det vanligt att använda två tecken för att avsluta varje rad (vagnretur, newline, vilket är r och n tror jag). Varför två tecken när bara en är nödvändig Detta går tillbaka till skrivare. Förr i tiden var det dags för en skrivare att återgå till början av en linje lika med tiden som det tog för att skriva två tecken. Så, två tecken placerades i filen för att ge skrivartiden tid för att flytta skrivarens boll tillbaka till början av raden. Detta faktum är inte så viktigt. Dess mestadels trivia. Anledningen till att jag tar upp det är bara om du undrar varför överföring av filer till UNIX från Windows ibland genererar roliga tecken. Redigering binära filer Nu när du vet att varje karaktär som skrivits i en ASCII-fil motsvarar en bit i en fil kanske du förstår varför det är svårt att redigera en binär fil. Om du vill redigera en binär fil vill du verkligen redigera enskilda bitar. Antag exempelvis att du vill skriva det binära mönstret 1100 0011. Hur skulle du göra det Du kanske är naiv och skriver in följande i en fil: Men du borde nu veta att det här inte redigerar enskilda bitar av en fil. Om du skriver in 1 och 0 går du verkligen in i 0x49 och 0x48. Det vill säga du skriver in 0100 1001 och 0100 1000 i filerna. Du skriver faktiskt (indirekt) 8 bitar åt gången. Men, hur antar jag att redigera binära filer, utropar du Ibland ser jag detta dilemma. Eleverna får veta att de ska utföra en uppgift. De försöker utföra uppgiften, och trots att deras lösning inte alls ger mening, gör de fortfarande det. Om du blir ombedd att tänka på om den här lösningen verkligen fungerar kan de eventuellt orsaka att det är fel, men då frågar theyd Men hur redigerar jag en binär fil Hur redigerar jag de enskilda bitarna Svaret är inte enkelt. Det finns några program som låter dig skriva in 49, och det översätter detta till en enda byte, 0100 1001, istället för ASCII-koden för 4 och 9. Du kan ringa dessa program hex redaktörer. Tyvärr kan dessa inte vara så lättillgängliga. Det är inte så svårt att skriva ett program som läser i en ASCII-fil som ser ut som hexpar, men konverterar den till en sann binär fil med motsvarande bitmönster. Det innebär att det tar en fil som ser ut som: och konverterar denna ASCII-fil till en binär fil som börjar 0110 0011 (vilken är 63 i binär). Observera att den här filen är ASCII, vilket betyder vad som verkligen lagras är ASCII-koden för 6, 3, (space), a, 0, och så vidare. Ett program kan läsa denna ASCII-fil och generera lämplig binär kod och skriva den till en fil. Således kan ASCII-filen innehålla 8 byte (6 för tecknen, 2 för mellanslag), och binärfilens utgång skulle innehålla 3 byte, en byte per hexpar. Visa binära filer De flesta operativsystem har ett program som låter dig se en fil i binärformat. Att läsa 0s och 1s kan dock vara besvärligt, så de brukar översättas till hexadecimal. Det finns program som heter hexdump som kommer med Linux-distributionen eller xxd. Medan de flesta föredrar att visa filer via en textredigerare, kan du bara enkelt visa ASCII-filer på så sätt. De flesta textredigerare låter dig titta på en binär fil (t. ex. en körbar), men lägg in saker som ser ut som att indikera kontrolltecken. En bra hexdump försöker översätta hexparen till utskrivbar ASCII om det kan. Detta är intressant eftersom du upptäcker att i exempel körbara filer är många delar av filen fortfarande skrivna i ASCII. Så det här är en mycket användbar funktion att ha. Skriva binära filer, del 2 Varför använder folk binära filer i alla fall En orsak är kompaktitet. Antag exempelvis att du ville skriva numret 100000. Om du skriver det i ASCII skulle det ta 6 tecken (vilket är 6 byte). Men om du representerar det som unsigned binär kan du skriva ut det med 4 byte. ASCII är bekvämt, eftersom det brukar vara mänskligt läsbart, men det kan använda mycket utrymme. Du kan representera information mer kompakt genom att använda binära filer. En sak du kan göra är att spara ett objekt till en fil. Detta är en slags serialisering. För att dumpa den till en fil, använder du en write () - metod. Vanligtvis passerar du i en pekare till objektet och antalet byte som används för att representera objektet (använd sizeof-operatören för att bestämma detta) till write () - metoden. Metoden dumpar sedan ut byte som det visas i minnet i en fil. Du kan sedan återställa informationen från filen och placera den i objektet med hjälp av en motsvarande read () - metod som typiskt tar en pekare på ett objekt (och det ska peka på ett objekt som har minnet allokerat, oavsett om det är statiskt eller dynamiskt allokerad) och antalet byte för objektet och kopierar byte från filen till objektet. Självklart måste du vara försiktig. Om du använder två olika kompilatorer, eller överför filen från en typ av maskin till en annan, kanske den här processen inte fungerar. Speciellt kan föremålet läggas ut annorlunda. Detta kan vara så enkelt som endianness, eller det kan finnas problem med vaddering. Det här sättet att spara objekt på en fil är snyggt och enkelt, men det kanske inte är allt så bärbart. Dessutom motsvarar den en grundlig kopia. Om ditt objekt innehåller pekare kommer det att skriva ut adresserna till filen. Dessa adresser kommer sannolikt att vara helt meningslösa. Adresser kan vara meningsfulla när program körs, men om du avslutar och startar om, kan adresserna ändras. Det är därför som vissa människor uppfinnar sitt eget format för att lagra objekt: för att öka portabiliteten. Men om du vet att du inte lagrar objekt som innehåller pekare, och du läser in filen på samma typ av datorsystem skrev du det och du använder samma kompilator, det borde fungera. Det här är en anledning till att människor ibland föredrar att skriva ut ints, chars, etc. i stället för hela objekt. De tenderar att vara något mer bärbara. En ASCII-fil är en binär fil som består av ASCII-tecken. ASCII-tecken är 7-bitars kodningar lagrade i en byte. Således har varje byte av en ASCII-fil sin mest signifikanta bit satt till 0. Tänk på en ASCII-fil som en speciell typ av binär fil. En generisk binär fil använder alla 8 bitar. Varje bit av en binär fil kan ha hela 256 bitsträngsmönster (i motsats till en ASCII-fil som endast har 128 bitsträngsmönster). Det kan hända att Unicode-textfiler blir vanligare. Men för nu är ASCII-filer standardformatet för textfiler. Ascii-text till binäromvandlare För att använda denna ascii-text till binärt konverteringsverktyg, skriv ett ascii-värde som hjälp för att få 01101000011001010110110001110000 och klicka sedan på knappen Konvertera. På så vis kan du konvertera upp till 128 ascii-text till binära tecken. ASCII är ett kodningssystem, känt som en förkortning för den amerikanska standardkoden för informationsutbyte. Designad initialt för gamla typ av datorer och skrivare från telegrafiska koder, baserades den på 128 symboler inklusive 10 nummer, 26 bokstäver i engelska alfabetet, ett antal skiljetecken etc. Systemet representerar synliga tecken eller kommandon för utskrift som start, vänta, komplett etc. De senaste versionerna av ASCII-system används mycket i telekomutrustning och datorkommunikation. Hex System Hex. eller hexadecimal. är ett nummer system av bas 16. Detta nummersystem är speciellt intressant, eftersom vi i vårt casual decimal system endast har 10 siffror för att representera antal. Eftersom hex-systemet har 16 siffror är de extra 6-siffrorna som representeras av de första 6 bokstäverna i engelska alfabetet. Därför är hex-siffror 0,1,2,3,4,5,6,7,8 och 9A, B, C, D, E, F. Detta nummersystem är det mest använda i matematik och informationsteknik. Dvs. I html-programmeringsfärger kan representeras av ett sexsiffrigt hexadecimalt tal. FFFFFF representerar vit, 000000 representerar svart och så vidare. Ascii-text till binär omvandlingsexempel hjälp (01101000011001010110110001110000) 2 hav (011100110110010101100001) 2 kärlek (01101100011011110111011001100101) 2 Kontrollera även Binary Ascii Konverteringstabell hur man konverterar ascii-text till binär. Följande ASCII-tabell innehåller både ASCII-kontrolltecken, ASCII-skrivbara tecken och Den utökade ASCII-teckensatsen ISO 8859-1, även kallad ISO Latin1 ASCII-kod - Den utökade ASCII-tabellen ASCII står för American Standard Code for Information Interchange. Det är en 7-bitars karaktärskod där varje enskild bit representerar en unik karaktär. På denna webbsida hittar du 8 bitar, 256 tecken, enligt ISO 8859-1 och Microsoft Windows Latin-1 ökade tecken, vilket är tillgängligt i vissa program som Microsoft Word. ASCII-kontrolltecken (teckenkod 0-31) De första 32 tecknen i ASCII-tabellen är otryckliga kontrollkoder och används för att styra kringutrustning som skrivare.

No comments:

Post a Comment