欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CSAPP学习日志5:hexify

程序员文章站 2022-03-04 21:42:28
...

代码全览

/* Convert sequence of hex digits on command line into a string, terminated by \n */
#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;
}

运行结果如下:
CSAPP学习日志5:hexify

①stroul函数:原型:unsigned long strtoul (const char* str, char** endptr, int base);,作用:将字符串转换成无符号长整型数,第一个参数:要转换为无符号长整数的字符串的首地址,第二个参数:返回字符串有效数字的结束地址,若第二个参数为 NULL,则表示该参数无效,或不使用该参数,第三个参数:转换基数,当 base 的值为 0 时,默认采用 10 进制转换。

②程序将参数按16进制处理,在强制类型转换为字符型输出,如30H对应十进制48,查阅ASCⅡ码表可知其对应的字符是0,后面输出的字符以此类推。

相关标签: 学习日志