How to interpret ‘xxd’ command output

binaryterminal

So, favouring the command xxd -b filename over hexdump -C filename to get the actual 1s and 0s of a binary file, i get this output from a file:

00009f6: 00000000 00000000 00001100 00000000 00000000 00000000  ......
00009fc: 01100000 00000000 00000000 00000000 00011000 00000000  `.....
0000a02: 00000000 00000000 00000010 00000000 00000000 00000000  ......
0000a08: 00000000 00000000 00000001 00000000 00000000 00000000  ......
0000a0e: 00000001 00000000 00101111 01010011 01111001 01110011  ../Sys
0000a14: 01110100 01100101 01101101 00101111 01001100 01101001  tem/Li
0000a1a: 01100010 01110010 01100001 01110010 01111001 00101111  brary/
0000a20: 01000110 01110010 01100001 01101101 01100101 01110111  Framew
0000a26: 01101111 01110010 01101011 01110011 00101111 01000011  orks/C
0000a2c: 01101111 01110010 01100101 01010111 01001100 01000001  oreWLA
0000a32: 01001110 00101110 01100110 01110010 01100001 01101101  N.fram
0000a38: 01100101 01110111 01101111 01110010 01101011 00101111  ework/
0000a3e: 01010110 01100101 01110010 01110011 01101001 01101111  Versio

Now the binary itself is not a problem, it looks to be hexadecimal which is fairly simple to decode, however, can anyone identify what these non binary columns signify? I assume that the columns 2 to 7 are the actual binary of the file, which leaves columns 1 and 8 which are definitely not binary, but have no stated purpose either as in no column headings.

So can anyone tell me what the columns on the other side of the binary are for and what they are telling me?

Thanks in advance.

Best Answer

The first column reflects the address/position of the data within the file (on the first line of your output it should start with 0000000 unless you have used xxd -s), the last column contains the textual representation of the file content (for bytes which have a printable ASCII value).