So. I have been experimenting with fwrite().
On my system sizeof( int ) = 4. I have an array of ints that contains: 1, 2, 3, 4, 5 and 6.
When i write it to a binaryfile and view it with hexdump I get:
0000000 0001 0000 0002 0000 0003 0000 0004 0000
0000010 0005 0000 0006 0000
0000018
Whats does it write zeroes between the 4byte values?
I think you're misunderstanding how big a byte is in your output - 8 bits require two hexadecimal digits to be completely represented. One single int
from your example is:
0001 0000
You might want to display as 32-bit data (or 8-bit data) rather than 16. That's what makes your dump look weird.
I duplicated your binary file and ran od
with a few different options. Hopefully you find the example enlightening:
$ od -t x4 example
0000000 00000001 00000002 00000003 00000004
0000020 00000005 00000006
0000030
$ od -t x2 example
0000000 0001 0000 0002 0000 0003 0000 0004 0000
0000020 0005 0000 0006 0000
0000030
$ od -t x1 example
0000000 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00
0000020 05 00 00 00 06 00 00 00
0000030
As you can see best from the 1- and 4-byte examples, I'm also on a little-endian machine, like you.