次のように、各バイトを個別に区切るために整数をマスクしようとしています。
int a = (0xffffffff & 0xff000000) >> 24;
int b = (0xffffffff & 0x00ff0000) >> 16;
int c = (0xffffffff & 0x0000ff00) >> 8;
int d = 0xffffffff & 0x000000ff;
この場合、b、c、および d は正しい答え 255 を返しますが、a は、何に変更しても -1 およびその他の負の数を返し続けます。試してみました。
int a = (0xefffffff & 0xff000000) >> 24;
そしてそれは私に-17を与えます。
この境界ケースで a が 255 およびその他の正の数を与えるように、この問題を解決する方法を誰かが知っていますか?