unsigned int
hexval(char *str);
main(int argc, char *argv[])
{
if(argc != 2){
printf("コマンドの入力形式が間違っています.\n");
return;
}
printf("%x\n", hexval(argv[1]));
}
unsigned int
hexval(char *str)
{
unsigned long
num;
int i1, ch;
num = 0L;
for(i1 = 0; ; i1++){
if(str[i1] >= '0' && str[i1] <= '9'){
ch = str[i1] - '0';
}
else if(str[i1] >= 'a' && str[i1] <= 'f'){
ch = str[i1] - 'a' + 10;
}
else if(str[i1] >= 'A' && str[i1] <= 'F'){
ch = str[i1] - 'A' + 10;
}
else if(str[i1] == '\0'){
break;
}
else{
printf("変換エラー\n");
num = 0xFFFFFFFF;
break;
}
num *= 16;
num += ch;
if(i1 >= 8){
printf("値がオーバーしました\n");
num = 0xFFFFFFFF;
break;
}
}
return(num);
}
|