将ascii转换为整数(C)

时间:2014-09-06 21:22:47

标签: c loops for-loop ascii

我是C的新手,我正在研究一种将ascii转换为整数的方法。所以基本上如果我有ABCD(基地16)生病得到43981(基数10)..只需一小段步行通过我所拥有的。我从字符串中取出一个数字然后该数字需要翻译,所以我调用我的chartoint方法。然后我想在添加新号码之前我需要*基础的前一个结果。我也对printf方法感到困惑。到目前为止,这是我的方法。

void ascii2int(char *ascii, int base){
    int totalstring = 0;    
    if(2<= base && base <= 16){ 
        for (int i = 0; i < strlen(ascii); i++) {
            // Extract a character
            char c = ascii[i];
            // Run the character through char2int
            int digit = char2int(c);
            totalstring= digit * base;
            printf("%d/n",totalstring);
        }
    }
}

char2int

 int char2int(char digit){
    int converted = 0;   
    if(digit >= '0' && digit <= '9'){
    converted = digit - '0';
    }   
    else if( digit >= 'A' && digit <= 'F'){
    converted = digit - 'A' + 10;       
    }
    else{
    converted = -1;}
return converted;
}

2 个答案:

答案 0 :(得分:3)

假设函数char2int正确实现......

改变这个:

totalstring = digit * base;

对此:

totalstring *= base;  // totalstring = totalstring * base
totalstring += digit; // totalstring = totalstring + digit

或者对此:

totalstring = totalstring * base + digit;

此外,在printf循环之外调用for (并将/n更改为\n)。

答案 1 :(得分:0)

解决方案:

void ascii2int(char *ascii, int base){
//int digit = 0;    
int totalstring = 0;    
if(2<= base && base <= 16){ 
for (int i = 0; i < strlen(ascii); i++) {
    // Extract a character
    char c = ascii[i];
    // Run the character through char2int
    int digit = char2int(c);
totalstring = totalstring * base + digit;
        }
printf("%d", totalstring);

}

}