バイト配列を long に変換しようとしました
long readAndSkipLong(char*& b)
{
unsigned long ret = (b[0] << 56) | (b[1] << 48) | (b[2] << 40) | (b[3]<<32) | (b[4] << 24) | (b[5] << 16) | (b[6] << 8) | (b[7]);
return ret;
}
私のシフトが正しくないようです。意図した値に対して
152 --> 00000000 00000000 00000000 00000000 00000000 00000000 00000000 10011000
私は得る:
-104 --> 11111111 11111111 11111111 11111111 11111111 11111111 11111111 10011000
バグがどこにあるのか分かりますか?