Sometimes, when you load a compiled binary with the wrong mime type, or, for example, run the "more" command in a binary, you get a bunch of "manly gook" for lack of a better term.
For example, this is a snippet of what I see when I run “more” from the command line on a very simple C program compiled with gcc on OS X.
<94>^^^@^@ESC^@^@^@^^^A^@^@<A8>^^^@^@.^@^@^@^N^D^@^@^P ^@^@@^@^@^@^O^D^@^@^L ^@^@H^@^@^@^O^D^@^@^H ^@^@P^@^@^@^O
^D^@^@^@ ^@^@\^@^@^@^C^@^P^@^@^P^@^@p^@^@^@^O^A^@^@b^_^@^@y^@^@^@^O^D^@^@^D ^@^@<82>^@^@^@^O^A^@^@<B6>^^^@^@<88>
^@^@^@^O^A^@^@T^_^@^@<8D>^@^@^@^O^A^@^@T^^^@^@<93>^@^@^@^A^@^A^B^@^@^@^@<99>^@^@^@^A^@^A^B^@^@^@^@^L^@^@^@^M^@^@
^@ ^@dyld_stub_binding_helper^@__dyld_func_lookup^@dyld__mach_header^@_NXArgc^@_NXArgv^@___progname^@__mh_execute
_header^@_average^@_environ^@_main^@_sum^@start^@_exit^@_printf^@^@^@^@
Can someone explain in simple words why this is so? What happens when a text editor or mime plain text type tries to interpret binary data? Does ^ @ mean anything in this context? Why is there some kind of text and some kind of strange hook? Is there any standard for how this binary data is presented in the text? Why is it not just 1s and 0s?
I can conceptually understand ascii or unicode as a representation of characters in a number system that can be reduced to binary 1 and 0 and a number system that the CPU understands. But at a higher level, I'm trying to understand what binary data is. I think I want to "see the abstraction," if that makes sense.
Is there a way to “see” binary data in any meaningful way in a text editor?