代码为:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int i;
for (i = 1; i < argc; i++) {
unsigned long dig = strtoul(argv[i], NULL, 16);
putchar((char) dig);
}
putchar('\n');
return 0;
}
在Linux环境下运行结果为:
定义函数
unsigned long strtoul(const char *nptr,char **endptr,int base);
strtoul()会将参数nptr字符串根据参数base来转换成无符号的长整型数。参数base范围从2至36,或0。参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制数等。
在此代码中,输入的参数值先按base值(16进制)转换,再进行扩展为long型。
30按16进制转换:16X3=48;48再被强制类型转换成char型,根据ASCII表可知,48对应的值是0;所以结果可验证。