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
Version imprimable
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
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:
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:
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]; }
Exact, bien vu ! Il faut donc divisé par 8 pour obtenir un buffer pile poil à la taille.Citation:
Envoyé par bouye