this was an old project I Did 7 years ago to be exact I created this by analyzing and decoding exactly how javascript compiles it's keyboard ASCII data everything you type into an program editor or any language is one byte big per key you hit and some byte values out of all 255 is used as identifiers for tabs and the end of the data such as 00000000 binary which is one byte and follows the standard format of the keyboard byte code format except 00000000 identified the end of the string which an string is an set of bytes in an list known as an string of keys sent from an keyboard we can only use some of the 255 values of the byte read in an string as mention the first value of an byte which is 0 terminates an string and 0 is sometimes used in binary data as an number value for like an integer because integers use just the number values though the bytes and dose not use certain values of 255 of an byte to print an character an decimal string only uses 10 of the 255 values per byte of the string because we are only using 0 to 9 and 0 to 9 from the keyboard is binary codes 0=00110000 and 1=00110001 and 2=00110010 each number in an base 10 string is assigned the key codes on the keyboard that when you hit the number keys they send an byte and that byte makes the decimal number only 10 are used out of the values of the byte that is assigned to each key on the keyboard in the standard called ASCII and an string is in the standard ASCII and because some values of the byte is used for identifying the end of the text data for example 00000000 binary it causes errors when opening binary files because binary files use each number value of the bytes to make more combinations in less space an string is not reliable for storing numbers and can only use some of the possible values of an byte and these possible values become an counting system for example F in hex plus one has to carry because F is the last digit of hex and F is the value 15 so 15+1=16 but in hex F+1=has to carry and F+1=10 because one is the first hex digit and it has to carry so if we multiply the second digit by 16 it will tell us how many times we added to 16 then we add our ones in ASCII 85 we are doing the same thing except we are using 85 byte values of ASCII that is not used for any identification codes inside an string and when we carry we carry to an 85 value because the max value before we have to carry is actually 84 in hex which is called base 16 it's last digit has an max value of 15 before carrying to an 16 column the base of an number system is how much you are using to count with before you carry of the possible values the number base is an term in mathematics binary numbers existed before computers existed these were number systems used in math before computers existed because we are only using some of the possible values of an byte for example in hex the max value of FF and the value of each digit is 15,15 and the carried times to the second place over is 15 times we ad to count 15 ones before carrying and when we carry it is worth how many 16 values so 15*16,15 is the place values of base 16 and 15*16+15=255 what is the max value of an byte is is 255 ow big is one byte 8 binary digits how big is one key code from the keyboard one byte how big is tow key codes from the keyboard two bytes so to use tow hex digits to make the value 255 we are using 16 binary digits instead of 8 how much bigger is hex data than an actual binary file easy 16 is the end result and 8 is how big an byte is originally we calculate 16/8=2 it is tow times bigger because every key on the keyboard is 8 binary digits and two hex digits is tow bytes of ASCII used in strings and the keyboard and each all have their own code and some are used as special identifiers in strings so you can not use all 255 values in an string if you want to store numbers binary is the best format if you want to store an structure have binary numbers that identify the parts of the structure the same way programing languages do it as it compiles the patterns to the ASCII code you typed and checks an dictionary of math conversion functions such as each byte separates to an value between 0 to 9 per bate for a ASCII string to go to an image printing function that draws an image for each byte value from ASCII it is not hard binary can be used any way you dream up and any format or structures you dream up as it is the original format everything is in. This hack I did is driven off of changing the byte stream position to write pure binary data without the ASCII string characteristics.