J'ai un entier: 1695609641
quand j'utilise la méthode:
String hex = Integer.toHexString(1695609641);
system.out.println(hex);
donne:
6510f329
mais je veux un tableau d'octets:
byte[] bytearray = new byte[] { (byte) 0x65, (byte)0x10, (byte)0xf3, (byte)0x29};
Comment puis-je faire ça?
Réponses:
l'utilisation de ByteBuffer de Java NIO est très simple:
production:
la source
"0x%02X"
si vous voulez toujours deux caractères hexadécimaux ainsi que des hexadécimaux majuscules, par exemple desSystem.out.format("0x%02X", (byte) 10)
affichages0x0A
.Que diriez-vous:
L'idée n'est pas la mienne . Je l'ai repris d' un article sur dzone.com .
la source
>>>
plutôt que l'opérateur de décalage droit>>
( docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html ) donc le comportement peut ne pas être comme souhaité / comme prévu avec des nombres signés et non signésBigInteger.valueOf(1695609641).toByteArray()
la source
BigInteger.toByteArray()
states: "Le tableau contiendra le nombre minimum d'octets requis pour représenter ce BigInteger ..."la source
Utilisation de la goyave :
la source
la source
la source
Les morceaux ci-dessous fonctionnent au moins pour envoyer un int via UDP.
int en tableau d'octets:
tableau d'octets en int:
la source
Étant donné que vous souhaitez généralement reconvertir ce tableau en un entier ultérieurement, voici les méthodes pour convertir un tableau d'entiers en un tableau d'octets et vice-versa:
Notez qu'en raison de la propagation des signes et autres, les "& 0xFF ..." sont nécessaires lors de la reconversion en int.
la source
pour le premier octet
pour la deuxième boucle et etc., en écrivant dans un tableau d'octets préalloué. Un peu désordonné, malheureusement.
la source
La classe org.apache.hadoop.hbase.util.Bytes a un tas de méthodes de conversion byte [] pratiques, mais vous ne voudrez peut-être pas ajouter tout le fichier HBase à votre projet uniquement dans ce but. Il est surprenant que non seulement une telle méthode manque AFAIK du JDK, mais aussi des bibliothèques évidentes comme commons io.
la source
Mon essai:
Avec lui, vous pouvez faire ceci:
La classe complète est ici: https://gist.github.com/superbob/6548493 , il prend en charge l'initialisation à partir de courts ou longs
la source
Si vous utilisez apache-commons
la source