Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2930 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Resolu] Tableau de byte -> float

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Resolu] Tableau de byte -> float

n°1521428
jan san ka​r
profil : pas le bon
Posté le 28-02-2007 à 10:37:16  profilanswer
 

Bonjour,
Donc j'ai un soucis étrange.
 
En résumé je récupère un flux de bytes d'une base de données (qui a été créé en C++ (le flux pas la base)).
LargeObject objet_donnees = lobj.open(oid);
 
ensuite je lis une ligne de données complète
byte[] tab_byte = objet_donnees.read(720*4);
comme il s'agit de float je lis un multiple de 4 byte
 
puis je wrap ça dans un ByteBuffer qui normalement doit me convertir ces bytes en float
ByteBuffer byte_buf = ByteBuffer.wrap(tab_byte);
puis
float valeur = byte_buf.getFloat();
(et ça avance dans le buffer (j'ai une boucle dessus qui va de i=1 à i*4<=byte_buf.capacity() en incrémentant i de 1))
 
et donc le soucis est que ma valeur en system.out.println est vraiment étrange
du genre si je la sort en hexa :
0x0.014082p-126
et donc en normal
5.7488E-41
ce qui est plutot chelou
 
Aurai-je fais une erreur idiote quelque part ? (par exemple le println permet-il vraiment de faire ça ?)
Ou alors c'est un soucis de conversion que je n'ai pas compris ?
 
(rq : j'ai mis les types de données histoire de bien montrer ce que je manipule)
 
ps :  
j'ai trouvé un code qui fait une conversion, donc est-ce que le bytebuffer ne sert donc pas à ça et qu'il faut utiliser un truc comme ci-dessous ?

Code :
  1. public static float arr2float (byte[] arr, int start) {
  2.  int i = 0;
  3.  int len = 4;
  4.  int cnt = 0;
  5.  byte[] tmp = new byte[len];
  6.  for (i = start; i < (start + len); i++) {
  7.   tmp[cnt] = arr[i];
  8.   cnt++;
  9.  }
  10.  int accum = 0;
  11.  i = 0;
  12.  for ( int shiftBy = 0; shiftBy < 32; shiftBy += 8 ) {
  13.   accum |= ( (long)( tmp[i] & 0xff ) ) << shiftBy;
  14.   i++;
  15.  }
  16.  return Float.intBitsToFloat(accum);
  17. }


(http://www.captain.at/howto-java-convert-binary-data.php)


Message édité par jan san kar le 28-02-2007 à 10:49:14
mood
Publicité
Posté le 28-02-2007 à 10:37:16  profilanswer
 

n°1521442
jan san ka​r
profil : pas le bon
Posté le 28-02-2007 à 10:48:37  profilanswer
 

Bon histoire de faire un suivi : oui ça marche vachement mieux avec la fonction donnée au dessus
sinon c'est bien le java c'est simple [:petrus75]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Resolu] Tableau de byte -> float

 

Sujets relatifs
[C#][.net][RESOLU] Prob fermeture de connexion: bug .NET ?[résolu] transfert de fichier php
Taille d'un tableau associatif[Résolu] dynamic classpath et plugins
[RESOLU]comment calculer la distance entre 2 villes (code postaux?) ??fork et SIGCHLD (RESOLU)
Tableau : scroller le contenu et pas l'entete[RESOLU]Url Rewriting
[Architecture de l'ordi] Taille bus d'adresses, (Résolu)[Résolu] [VBS] Mappage réseaux selon le groupe de l'utilisateur AD
Plus de sujets relatifs à : [Resolu] Tableau de byte -> float


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR