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: Avez-vous le droit chemin? Merci p> p>
3 Réponses :
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) }
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.
J'ai enfin trouvé la bonne montaine à faire pour que les tests de l'unité fonctionnent.
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) }