Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Implement code after convert Java to Kotlin error

Tags:

android

kotlin

I already try to found if this problem was here on StackoverFlow, before I came here. I am try to convert a Java class to Kotlin but Android Studio does not do it very well.

I try to do it manually but not success.

This is the original code in Java

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

here is the code converted by Android Studio

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

the error is after convert, Android Studio does not recognize shr & and, when I press ALT+ENTER it shows a popup to Create extension function Byte.shr and after press enter, it create a this private fun:

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

the same to and but now on popup it has an Import option that point to import kotlin.experimental.and or create private fun:

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

after do this and run my app the class is not working with message An operation is not implemented: not implemented

How to implement this to work?

like image 217
Rafael Guimarães Avatar asked Mar 05 '26 14:03

Rafael Guimarães


1 Answers

You can use the operators (infix functions) shr and and for the type Int (and Long) in Kotlin.
Just change b with b.toInt():

private fun appendHex(sb: StringBuffer, b: Byte) {
    sb.append(HEX[b.toInt() shr 4 and 0x0f]).append(HEX[b.toInt() and 0x0f])
}
like image 176
forpas Avatar answered Mar 08 '26 11:03

forpas



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!