资源描述:
《Ascii vs binary.pdf》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Asciivs.BinaryFilesIntroductionMostpeopleclassifyfilesintwocategories:binaryfilesandASCII(text)files.You'veactuallyworkedwithboth.Anyprogramyouwrite(C/C++/Perl/HTML)isalmostsurelyanASCIIfile.AnASCIIfileisdefinedasafilethatconsistsofASCIIcharacters.It'susuallycreatedbyusingatexteditorlikeemacs,pico,
2、vi,Notepad,etc.Therearefanciereditorsoutthereforwritingcode,buttheymaynotalwayssaveitasASCII.Asanaside,ASCIItextfilesseemvery"American-centric".Afterall,the'A'inASCIIstandsforAmerican.However,theUSdoesseemtodominatethesoftwaremarket,andsoeffectively,it'saninternationalstandard.Computerscienceisalla
3、boutcreatinggoodabstractions.Sometimesitsucceedsandsometimesitdoesn't.Goodabstractionsareallaboutpresentingaviewoftheworldthattheusercanuse.Oneofthemostsuccessfulabstractionsisthetexteditor.Whenyou'rewritingaprogram,andtypingincomments,it'shardtoimaginethatthisinformationisnotbeingstoredascharacter
4、s.Ofcourse,ifsomeonereallysaid"Comeon,youdon'treallythinkthosecharactersaresavedascharacters,doyou?Don'tyouknowabouttheASCIIcode?",thenyou'dgrudginglyagreethatASCII/textfilesarereallystoredas0'sand1's.Butit'stoughtothinkthatway.ASCIIfilesarereallystoredas1'sand0's.Butwhatdoesitmeantosaythatit'sstor
5、edas1'sand0's?Filesarestoredondisks,anddiskshavesomewaytorepresent1'sand0's.Wemerelycallthem1'sand0'sbecausethat'salsoanabstraction.Whateverwayisusedtostorethe0'sand1'sonadisk,wedon'tcare,providedwecanthinkofthemthatway.Ineffect,ASCIIfilesarebasicallybinaryfiles,becausetheystorebinarynumbers.Thatis
6、,ASCIIfilesstore0'sand1's.TheDifferencebetweenASCIIandBinaryFiles?AnASCIIfileisabinaryfilethatstoresASCIIcodes.RecallthatanASCIIcodeisa7-bitcodestoredinabyte.Tobemorespecific,thereare128differentASCIIcodes,whichmeansthatonly7bitsareneededtorepresentanASCIIcharacter.However,sincetheminimumworkablesi
7、zeis1byte,those7bitsarethelow7bitsofanybyte.Themostsignificantbitis0.Thatmeans,inanyASCIIfile,you'rewasting1/8ofthebits.Inparticular,themostsignificantbitofeachbyteisnotbeingused.AlthoughASCIIfilesarebinary