Soyez le premier à donner votre avis sur cette source.
Vue 1 240 fois - Téléchargée 113 fois
#include <iostream> #include <cstdint> #include <string> // Inversion d'une std::string void reverseStr(std::string& str) { int n = str.length(); for (int i = 0; i < n / 2; i++) std::swap(str[i], str[n-i-1]); } // Conversion en std::string d'un nombre entier en base b std::string int2base(int64_t x, int b) { std::string ch = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; int s; if(x < 0) s = -1; else if(x == 0) return "0"; else s = 1; x = s*x; std::string str; while(x > 0) { str = str + ch[x % b]; x = x / b; } if(s < 0) str = str + "-"; reverseStr(str); return str; } // Calcul d'un nombre entier écrit en base b int64_t str2int(std::string str, int b) { std::string ch = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; // str[0] est le signe '-' ou le 1-er chiffre et str[ni] le dernier chiffre. int s = 1; if(str[0] == '-') { s = -1; str = str.substr(1); } int64_t n = 0, bi = 1; int ni = str.size()-1; for(int i=ni; i >= 0; i--) { int k = -1; for(int j=0; j < b; j++) if(str[i] == ch[j]) {k=j; break;} if(k == -1) {std::cout << "Erreur dans str2int()" << std::endl; return 0;} n = n + k * bi; bi = bi * b; } return s*n; }
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.