我是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;
}
答案 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);
}
}