Хорошо, приведенный выше комментарий объясняет, что он делает, но если вы ищете разбивку операторов:
- Выполните побитовое
and
для salt[i]
и шестнадцатеричное число (&
оператор). - Выполнить побитовое
and
для salt[i]
и второе шестнадцатеричное число. - Выполнить побитовое
or
для результата шагов 1 и 2 (|
оператор). - Приведите результат шага 3 к
byte
- Сохраните результат в
salt[i]
Результат равенотмечено в блоке комментариев.Числа в формате 0xc0
и тому подобное находятся в шестнадцатеричном формате, что является основанием 16. Т.е. c0
в шестнадцатеричном формате эквивалентно 16*12 + 16*0 = 192
в десятичном виде.В шестнадцатеричном формате, так как у вас заканчиваются цифры в 9, вы начинаете использовать буквы.Таким образом, a = 10, b = 11, c = 12, d = 13, e = 14, f = 15, и f становится наивысшей «цифрой», поскольку при переходе к 16 вы переходите на одно место (как 16является базой).
См. также: