0
votes

Comment traduire le code avec une opération d'octet de Java en Kotlin?

Je voudrais traduire cette méthode à Kotlin mais je ne sais pas quelles sont les variables à lancer pour faire les choses correctement et avoir les bonnes mémoires d'opérations: xxx

Avez-vous le droit chemin? Merci


0 commentaires

3 Réponses :


1
votes

Il devrait être

import java.util.*
import kotlin.experimental.and

 fun bytestoUUID(buf: ByteArray, offset: Int): UUID {
    var lsb: Long = 0
    for (i in 15 downTo 8) {
        lsb = lsb shl 8 or ((buf[i + offset] and 0xff.toByte()).toLong())
    }
    var msb: Long = 0
    for (i in 7 downTo 0) {
        msb = msb shl 8 or ((buf[i + offset] and 0xff.toByte()).toLong())
    }
    return UUID(msb, lsb)
}


2 commentaires

Merci c'est ce que je pensais mais je ne sais pas si vous avez eu un impact sur la performance ou la mémoire allouée. Comme je traite beaucoup de données, je ne voudrais pas que la méthode soit plus lente. Dans mon esprit, le casting en Java est implicite mais je ne sais en fait pas comment le bytecode se comporte.


Les tests unitaires n'ont pas réussi à cette solution.



0
votes

J'ai enfin trouvé la bonne montaine à faire pour que les tests de l'unité fonctionnent. XXX


0 commentaires

0
votes
fun bytestoUUID(buf: ByteArray, offset: Int): UUID? {
    var lsb: Long = 0
    for (i in 15 downTo 8) {
        lsb = lsb shl 8 or (buf[i + offset] and 0xff)
    }
    var msb: Long = 0
    for (i in 7 downTo 0) {
        msb = msb shl 8 or (buf[i + offset] and 0xff)
    }
    return UUID(msb, lsb)
}

0 commentaires