J'utilise javas J'ai déjà découvert sur les deux méthodes: p> mais Comment obtenir cela dans un tableau d'octets? Le résultat devrait être un octet [] avec ces valeurs de remorquage. Je dois en quelque sorte faire des bittshifting mais, comment? P> Mise à jour: strong> p> J'ai trouvé: p> uuid code> et devez convertir un UUID en une matrice d'octet. Étrangement, la classe UUID ne fournit pas de
"Tobyltes ()" code> méthode.
ByteBuffer byteBuffer = MappedByteBuffer.allocate(2);
byteBuffer.putLong(uuid.getMostSignificantBits());
byteBuffer.putLong(uuid.getLeastSignificantBits());
3 Réponses :
Vous pouvez utiliser BYTEBUFFER
byte[] bytes = new byte[16]; ByteBuffer bb = ByteBuffer.wrap(bytes); bb.order(ByteOrder.LITTLE_ENDIAN or ByteOrder.BIG_ENDIAN); bb.putLong(UUID.getMostSignificantBits()); bb.putLong(UUID.getLeastSignificantBits()); // to reverse bb.flip(); UUID uuid = new UUID(bb.getLong(), bb.getLong());
une option si vous préférez "régulier" IO à NIO:
ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); dos.write(uuid.getMostSignificantBits()); dos.write(uuid.getLeastSignificantBits()); dos.flush(); // May not be necessary byte[] data = dos.toByteArray();
<!-- language: lang-java --> ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); dos.writeLong(password.getMostSignificantBits()); dos.writeLong(password.getLeastSignificantBits()); dos.flush(); // May not be necessary return baos.toByteArray();
Le code de la mise à jour n'est pas correct: il n'allocie que deux octets dans le tampon, mais vous avez besoin de 16. Le code dans la réponse ci-dessous est cependant correct.