Если у вас есть 32-разрядное целое число, вы можете рассматривать его как четыре 8-разрядных целых числа:
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01
\---------------------/ \---------------------/ \---------------------/ \------------------/
bits 24-31 (8 bits) bits 16-23 (8 bits) bits 8-15 (8 bits) bits 0-7 (8 bits)
Кодирование с прямым порядком байтов - это то место, куда вы отправляете старший байтво-первых, вам нужны биты 24-31 в первом байте, биты 16-23 во втором байте и так далее.Стандартный порядок байтов для сетевых коммуникаций имеет порядок байтов.( Little-endian наоборот и обычно используется для хранения в памяти на x86 и некоторых других платформах.)
Если вы преобразуете целое число в байт, самые значимые биты выбрасываются.
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01
\---------------------/ \---------------------/ \---------------------/ \------------------/
bits 24-31 (8 bits) bits 16-23 (8 bits) bits 8-15 (8 bits) bits 0-7 (8 bits)
cast to (byte)
07 06 05 04 03 02 01
\------------------/
bits 0-7 (8 bits)
Если вы сдвигаете вправо , вы перемещаете биты так, чтобы вы могли привести к (byte)
и последовательно получитьостальные части 32-разрядного целого числа:
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01
\---------------------/ \---------------------/ \---------------------/ \------------------/
bits 24-31 (8 bits) bits 16-23 (8 bits) bits 8-15 (8 bits) bits 0-7 (8 bits)
|
\---------------------------- >> 24 -----------------------------------\
|
07 06 05 04 03 02 01
\------------------/
previously bits 24-31
now bits 0-7 (8 bits)