を使用して最初のバイトを取得できることを知っています
int x = number & ((1<<8)-1);
または
int x = number & 0xFF;
しかし、整数のn番目のバイトを取得する方法がわかりません。たとえば、1234は32ビット整数として00000000 00000000 00000100 11010010です。これらのバイトをすべて取得するにはどうすればよいですか。最初の1つは210、2番目は4、最後の2つは0です。
int x = (number >> (8*n)) & 0xff;
nは最初のバイトが0、2番目のバイトが1などです。
メモリに現れる任意の順序で(n + 1)番目のバイト(x86のようなリトルエンディアンマシンでは最下位から最上位まで):
_int x = ((unsigned char *)(&number))[n];
_
ビッグエンディアンのマシンで最下位から最上位までの(n + 1)番目のバイトの場合:
_int x = ((unsigned char *)(&number))[sizeof(int) - 1 - n];
_
最下位から最上位(エンディアン)までの(n + 1)番目のバイトの場合:
_int x = ((unsigned int)number >> (n << 3)) & 0xff;
_
もちろん、これらはすべてn
<sizeof(int)
であり、number
がint
であると仮定しています。
int nth = (number >> (n * 8)) & 0xFF;
それを最下位バイトに入れて、「なじみのある」方法でそれを取ります。