Реализовать код после конвертации Java в ошибку Kotlin - PullRequest
3 голосов
/ 27 марта 2019

Я уже пытался выяснить, была ли эта проблема здесь на StackoverFlow , до того, как я пришел сюда. Я пытаюсь преобразовать класс Java в Kotlin , но Android Studio работает не очень хорошо.

Я пытаюсь сделать это вручную, но безуспешно.

Это оригинальный код в Java

    private static void appendHex(StringBuffer sb, byte b) {
        sb.append(HEX.charAt((b >> 4) & 0x0f)).append(HEX.charAt(b & 0x0f));
    }

вот код, преобразованный Android Studio

    private fun appendHex(sb: StringBuffer, b: Byte) {
        sb.append(HEX[b shr 4 and 0x0f]).append(HEX[b and 0x0f])
    }

ошибка после преобразования, Android Studio не распознает shr & and, когда я нажимаю ALT + ENTER , отображается всплывающее окно с Create extension function Byte.shr и после нажмите enter, это создаст это личное развлечение:

private infix fun Byte.shr(i: Int): Any {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}

то же самое для and, но теперь во всплывающем окне он имеет опцию Import, которая указывает на import kotlin.experimental.and или создает приватное веселье:

private infix fun Any.and(i: Int): Int {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}

после этого и запуска моего приложения класс не работает с сообщением An operation is not implemented: not implemented

Как реализовать это для работы?

1 Ответ

3 голосов
/ 27 марта 2019

Вы можете использовать операторы (инфиксные функции) shr и and для типа IntLong) в Kotlin.Просто измените b с b.toInt():

private fun appendHex(sb: StringBuffer, b: Byte) {
    sb.append(HEX[b.toInt() shr 4 and 0x0f]).append(HEX[b.toInt() and 0x0f])
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...