Quelqu'un sait comment convertir un grand nombre d'octets, ex. 1000 octets, en un int/long etc dans java?Convertir un octet en entier et inversement
Répondre
Vous pouvez utiliser une boucle
byte[] bytes =
int[] ints = new int[bytes.length];
for(int i=0;i<bytes.length;i++)
ints[i] = bytes[i];
1000 éléments pourraient prendre jusqu'à 10 micro-secondes de cette façon.
Beaucoup moins que sur un PC moderne. –
vrai, mais si 10 micro-secondes ne sonne pas comme longtemps, peu importe ce que c'est. ;) –
Pour convertir un byte
à un int
en Java, vous avez deux options:
byte val = 0xff;
int a = val; // a == -1
int b = (val & 0xff); // b == 0xff
Il n'y a pas de méthode dans la bibliothèque Java pour convertir un tableau d'un type primitif à un autre, vous aurez à fais-le manuellement.
Merci Paŭlo. Voici la réponse corrigée:
public class Main {
public static int[] convert(byte[] in) {
int bytesPerSample = 4;
int[] res = new int[in.length/bytesPerSample];
for (int i = 0; i < res.length; i++) {
int bOffset = i * bytesPerSample;
int intVal = 0;
for (int b = 0; b < bytesPerSample; b++) {
int v = in[bOffset + b];
if (b < bytesPerSample - 1) {
v &= 0xFF;
}
intVal += v << (b * 8);
}
res[i] = intVal;
}
return res;
}
public static byte[] convert(int[] in) {
int bytesPerSample = 4;
byte[] res = new byte[bytesPerSample * in.length];
for (int i = 0; i < in.length; i++) {
int bOffset = i * bytesPerSample;
int intVal = in[i];
for (int b = 0; b < bytesPerSample; b++) {
res[bOffset + b] = (byte) (intVal & 0xFF);
intVal >>= 8;
}
}
return res;
}
public static void main(String[] args) {
int[] in = {33, 1035, 8474};
byte[] b = convert(in);
int[] in2 = convert(b);
System.out.println(Arrays.toString(in2));
}
}
- 1. Convertir un objet en void * et inversement?
- 2. Convertir DateTime en long et inversement
- 3. PHP - Convertir un seul octet en entier (format graphique PCX)
- 4. Convertit un nombre entier en octet
- 5. convertir un octet en binaire
- 6. Convertir un objet en octet []
- 7. Comment convertir des lignes en colonnes et inversement
- 8. Convertir l'objet en octet []
- 9. convertir l'objet en octet []
- 10. Convertir un octet Python en un "entier 8 bits non signé"
- 11. Comment convertir un nombre en octet?
- 12. Convertir un entier en chaîne
- 13. Comment convertir un octet en bits?
- 14. Convertir un flux binaire en octet?
- 15. C++ et C# convertir octet
- 16. Comment convertir un octet en chaîne?
- 17. Convertir un tableau binaire en octet []
- 18. Comment convertir un octet en décimal?
- 19. iTextSharp - Comment convertir un document en octet []
- 20. Convertir l'image octet [] en un fichier
- 21. traitement: convertir int en octet
- 22. Convertir double en octet [] tableau
- 23. Comment convertir octet [] en varchar?
- 24. Octet à nombre entier en C#
- 25. Memory Stream convertir en octet
- 26. convertir un entier en long en vitesse
- 27. Convertir NSMutableArray en entier
- 28. Convertir varchar en entier
- 29. Comment convertir un tableau d'octets en nombre entier?
- 30. Comment convertir octet [] en base64 (et retour) en J2ME?
un int est de 32 bits (4 octets) et un long de 64 bits (8 octets). Que feriez-vous avec les autres 996 octets (ou 992) du tableau? Que veux tu vraiment faire? –