Serial.print(buffer[i],BIN);
Serial.print in BIN format doesn't print leading zeros, nor does it print a space or linefeed between each element of the buffer. You have no way of knowing where a number ends and the next begins.
11000000110000 could be 1 10000001 10000, or 11000000 1 100000 or even 11000000110000, etc.
This snippet:
const int S = 512;
short buffer[S];
int i;
buffer[0] = 1460;
buffer[1] = 12336;
for(i=0;i<2;i++)
Serial.print(buffer[i],BIN);
prints this:
1011011010011000000110000
Changing to println from print it prints this:
10110110100
11000000110000
which is still missing leading zeros but now you can reliably determine what each number is.
What I have in the SD: 0000010110110100
Prove it.
Pete