Membres inscrits :2359
Membres en ligne : 0
Invités en ligne : 5


|
Conversation : reinterpret_cast<> et lose precision |
chkone (Membre)
Inscrit le : 18-05-2008
Messages: 25
Snippets: 0
Tutoriels: 0
Hors ligne |
Amis du jour bonjour, amis du soir bonsoir, Devinez quoi... Et bien je code, je programme en C++ pour être innovant. Donc je lis un fichier a coup de std::fstream et de read parce que je veux récupérer un 1, 2 ou 8 octets. Donc je fais
Code Cpp: char _1_octet[1]; char _2_octets[2]; char _8_octets[8]; std::ifstream file; file.open(filename.c_str(), std::ios::in | std::ios::binary); if (file.good()) { file.read(_8_octets, 8); width = reinterpret_cast<unsigned long long>(_8_octets); }
Ici pas de problème mais lorsque je veux lire 1 ou 2 octets GCC râle. Lorsque je fais :
Code Cpp: file.read(_1_octet, 1); channel = reinterpret_cast<unsigned char>(_1_octet); // OU file.read(_2_octets, 2); D = reinterpret_cast<unsigned short>(_2_octets); GCC me dit :
Code:hd_pic.cpp|44|error: reinterpret_cast from `char*' to `unsigned char' loses precision| hd_pic.cpp|65|error: reinterpret_cast from `char*' to `short unsigned int' loses precision| Merci pour vaut aiguillage
|
|
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne |
Sinon tu peux passer par une union
|
Itérer est humain, récurser est divin
|
chkone (Membre)
Inscrit le : 18-05-2008
Messages: 25
Snippets: 0
Tutoriels: 0
Hors ligne |
ça m'aidera toujours pas l'union il y aura quand même le problème avec les pointeurs. Et je ne vais pas faire un union si je vais l'utilisé qu'une seul fois.
|
|
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne |
Comment ca un problème avec les pointeurs?
|
Itérer est humain, récurser est divin
|
chkone (Membre)
Inscrit le : 18-05-2008
Messages: 25
Snippets: 0
Tutoriels: 0
Hors ligne |
Le problème c'est de copier les bits contenu dans char[2] dans un unsigned short
|
|
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne |
union { char tableau[2]; unsigned short short_; } ---------- En plus tu copies plus XD
Dernière modification par xxltux (10-08-2008 18:23:50)
|
Itérer est humain, récurser est divin
|
chkone (Membre)
Inscrit le : 18-05-2008
Messages: 25
Snippets: 0
Tutoriels: 0
Hors ligne |
hmm franchement pas mal ton idée je prend
|
|
|