1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
typedef enum _BOOL{
FALSE = 0,
TRUE = 1
} BOOL;
typedef int INT32;
typedef unsigned int UINT32;
typedef unsigned long long UINT64;
/**
* @brief powUINT64(x, y) = x ^ y.
* Fait un calcul d'un nombre à la puissance d'un autre.
*/
UINT64 powUINT64(UINT64 x, UINT64 y){
UINT64 i;
UINT64 val = 1;
for (i=0; i < y; i++){
val *= x;
}
return val;
}
/**
* @brief Converti un string en UINT32 (base 10).
* La chaine ne doit pas contenir d'espace sinon ça retourne une erreur.
*
* @return retourne TRUE si conversion réussite.
*/
BOOL convStrtoUINT32(char *str, int len, UINT32 *retVal){
// valeur max d'un UINT32 = 4 294 967 295
UINT64 val = 0;
int index = 0;
printf("convStrtoUINT32->str \"%s\", len %i\r\n", str, len); // debug
if(len < 1){
return FALSE;
}
if(len > 10){
return FALSE;
}
while(len--){
char valTmp = str[len];
if((valTmp < '0') || (valTmp > '9')){
return FALSE;
}
//printf("valTmp : %u, 10^%i=%llu => %llu\r\n", valTmp - '0', index, powUINT64(10, index), (valTmp - '0') * powUINT64(10, index)); // debug
val += (valTmp - '0') * powUINT64(10, index);
index++;
}
if(val > 0xFFFFFFFF){
return FALSE;
}
*retVal = val;
return TRUE;
} |
Partager