Dupliquer possible:
Convertir un entier en tableau d'octets (Java)J'ai besoin de stocker la longueur d'un tampon, dans un tableau d'octets de 4 octets.
Pseudo code:
private byte[] convertLengthToByte(byte[] myBuffer) { int length = myBuffer.length; byte[] byteLength = new byte[4]; //here is where I need to convert the int length to a byte array byteLength = length.toByteArray; return byteLength; }
Quel serait le meilleur moyen d'y parvenir? Gardant à l'esprit, je dois reconvertir ce tableau d'octets en un entier ultérieurement.
Réponses
Trop de publicités? Vous pouvez convertir yourInt
en octets en utilisant un ByteBuffer
comme ceci:
return ByteBuffer.allocate(4).putInt(yourInt).array();
Attention, vous devrez peut-être penser à l' ordre des octets .
HariPerev
Points
111
public static byte[] my_int_to_bb_le(int myInteger){
return ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(myInteger).array();
}
public static int my_bb_to_int_le(byte [] byteBarray){
return ByteBuffer.wrap(byteBarray).order(ByteOrder.LITTLE_ENDIAN).getInt();
}
public static byte[] my_int_to_bb_be(int myInteger){
return ByteBuffer.allocate(4).order(ByteOrder.BIG_ENDIAN).putInt(myInteger).array();
}
public static int my_bb_to_int_be(byte [] byteBarray){
return ByteBuffer.wrap(byteBarray).order(ByteOrder.BIG_ENDIAN).getInt();
}
Stas Jaro
Points
2562
Sorrow
Points
4176
Cela devrait fonctionner:
public static final byte[] intToByteArray(int value) {
return new byte[] {
(byte)(value >>> 24),
(byte)(value >>> 16),
(byte)(value >>> 8),
(byte)value};
}
Code pris à partir d'ici .
Edit Une solution encore plus simple est donnée dans ce fil .