Bonjour,
Comment transformer un double en byte[]?
J'ai un double que je veux transformer en byte afin de la passer à un constructeur qui ne prend que un tableau de byte.
Merci
Bonjour,
Comment transformer un double en byte[]?
J'ai un double que je veux transformer en byte afin de la passer à un constructeur qui ne prend que un tableau de byte.
Merci
Merci de lire les règles du forum et surtout celle là Message clair et précis.
Evitons les ctrl c ctrl v => Ne sortons pas les codes de leur contexte sinon ça ne marche pas.
Quel genre de conversion cherches tu a faire ? Peux tu donner un exemple svp ?
euh arretez moi si je dis une co... mais théoriquement c'est possible de faire un cast explicite de double vers byte vu que ce sont deux types numériques mais euh...
ça va tronquer ton double en faisant un arrondis vers le bas. Est ce qu'a la base tes doubles ont bien lieu d'être des doubles ?
un exemple stp ?
magique le package nio, non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 double d=xxxx.yyyy; // tu mets ce qui t'intéresse ByteBuffer bb=ByteBuffer.allocate(Double.size()); bb.putDouble(d); byte [] monTableauDeBytes=bb.array();
Ou un truc du genre (pas teste) :
Iohack, compte tenu de la valeur de Double.SIZE (taille en bits et non pas en octets), il est possible que tu alloues un buffer trop grand (mais rien de mortel).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 double d... int size = 8; //Note : Double.SIZE = 64, Byte.SIZE = 8. // size = Double.SIZE / Byte.SIZE; long l = Double.doubleToLongBits(d); // Big endian export. byte[] bb = new byte[size]; // Little endian export. byte[] lb = new byte[size]; for (in i = 0 ; i < size ; i++) { bb[i] = (byte)((l >> (i*8)) & 0xFF); //ou Byte.SIZE. lb[size-1-i] = bb[i]; }
Merci de penser au tagquand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Exact, bien vu ! Il faut donc divisé par 8 pour obtenir un buffer pile poil à la taille.Envoyé par bouye
Partager