The little endian format has the least significant byte in the smallest index... you're saying here that the least significant byte is in the larger index. I think that it should probably be 
invert = (short)( buf[I] | ( (short)buf[I+1] << 8 ) )
or something to that effect. I could be completely wrong, though.