如何打印输入的字符串的十六进制表示

时间:2014-05-18 14:44:06

标签: c

#include<stdio.h>

int isNumericChar(char s){
        return ((s > '0' && s <'9') ? 1:0);
}

int my_atoi(char* s){
        int res = 0;
        int sign = 1;
        while(*s != '\0'){
                if(isNumericChar(*s) == 0){
                        return 0;
                }
                if(*s == '-'){
                        sign = -1;
                        s++;
                }
                res = ((res * 10) + (*s - '0'));
                s++;
        }
        return (res*sign);
}

int main(){
        char *s = "924";
        printf("\natoi : %d\n",my_atoi(s));
        return 0;
}

如何将字符串转换为0和9的整数? 有没有办法将输入的十六进制转换为以十六进制表示形式打印?

1 个答案:

答案 0 :(得分:0)

您可以根据this使用printf("\natoi : %x\n",my_atoi(s));

请注意,这仅适用于非负数。

对于否定,您可以随时使用:

int my_number = my_atoi(s);
printf("\natoi : %s%x\n", (my_number < 0) ? "-" : "", my_number);

我不太喜欢这个解决方案,但这是我现在能想到的唯一方法。