Char состоит из 2 байтов в Java и, конечно, байта является одним байтом.
Итак, в этой операции:
stringBytes[i] = (byte) stringChars[i] & 0x00FF
Значение символа (16 битов) представляет собой двоичное значение ANDED с номером 0x00FF (двоичное значение: 0000 0000 1111 1111), чтобы сделать его одним байтом.
Путем двоичного ANDING с 8 0s and 8 1s
вы в основном маскируете 8 левых старших или старших значащих бит (MSB) от значения символа, таким образом оставляя только 8 правых старших или младших значащих бит (LSB) без изменений. Затем код присваивает результирующие значения байту, используя приведение (byte)
, которое в противном случае является значением int
.