For example I have:
Dir[j].FileSize = buffer1[0] << 24| buffer1[1] << 16| buffer1[2] << 8| buffer1[3]
which gives me the correct value for 0x6400
which is 25600
but 0xC800
doesnt become 51200
but -14336
instead. I really like this bitshift method because it makes sense to me but if you know another way of converting it that would be good too :)