побитовое и не работает с байтами в котлин

Я пытаюсь написать код kotlin как:

for (byte b : hash) stringBuilder.append(String.format("%02x", b&0xff)); 

но я не имею никакого отношения к «&». Я пытаюсь использовать «b и 0xff», но он не работает. Побитовое «и» похоже работает на Int, а не на байте.

 java.lang.String.format("%02x", (b and 0xff)) 

это нормально использовать

 1 and 0xff 

Kolin предоставляет побитовые оператор-подобные функции инфикса, доступные только для Int и Long .

Таким образом, необходимо преобразовать байты в int для выполнения побитовых операций:

 val b : Byte = 127 val res = (b.toInt() and 0x0f).toByte() // evaluates to 15 

ОБНОВЛЕНИЕ: Поскольку Kotlin 1.1 эти операции доступны непосредственно на байте.

Из bitwiseOperations.kt :

 @SinceKotlin("1.1") public inline infix fun Byte.and(other: Byte): Byte = (this.toInt() and other.toInt()).toByte() 

Побитовое «и» любого байтового значения и 0xff всегда будет возвращать исходное значение.

Это легко увидеть, если вы нарисуете биты на диаграмме:

 00101010 42 11111111 and 0xff -------- 00101010 gives 42 
Intereting Posts
Как избежать выражения объекта для функций, возвращающих интерфейс SAM Kotlin – Ошибка: не удалось найти или загрузить основной класс _DefaultPackage При использовании Java / Kotlin для программирования рекомендуется использовать рекурсию хвоста или итерационную версию? Есть ли разница в производительности? Использование стандартных элементов HTML в KotlinJS безопасно напечатано Проект Android Kotlin не смог синхронизировать проект Gradle «Java» «не распознается как внутренняя или внешняя команда, программный или командный файл. в Котлине Исключение json в приложении kotlin Почему скрытие фрагмента вызывает исключение нулевого указателя? Предупреждение: опция '-d' с назначением каталога игнорируется, поскольку указан '-module' как я могу подавить непроверенные предупреждения бросания перед объявлением деструкции? Kotlin неожиданная `неразрешенная ссылка` Как получить данные из базы данных Firebase с помощью Kotlin? ImageButton OnClickListener не работает Единичное тестирование сопрограмм на потоке пользовательского интерфейса AccessToken.getCurrentAccessToken () всегда возвращает null в Kotlin