Ouais, je mettrais encore un petit test à la fin pour le cas où le nombre vaut zéro (pour imprimer une chaine "0" et pas la chaine nulle).
Sur numeric_limits<>::digits, je me pose une question...
L'avantage du code qu'on a là est qu'il peut facilement être transformé en un template qui donnerait la représentation binaire de tout type scalaire, tout ce qu'on a dans numeric_limits, en fait.
Mais peut être que sizeof(T)*8 permettrait d'avoir un code fonctionnant pour des types utilisateurs (des POD seulement, j'imagine, mais quand meme). Ca nous donnerait qqchose comme
Code:
1 2 3 4 5 6 7 8 9
|
template<typename T> string tobinary(const T &valeur) {
bitset<8*sizeof(T)> bs(valeur);
string s=bs.to_string();
int pos=s.find_first_not_of("0") ;
if(pos==string::npos) return string("0");
return s.substr(pos);
return s
} |
Francois