Why do we use n = 16 * n + hexdigit

Go to my personal blog

There is a program to convert a string of hexadecimal digits into its equivalent integer value as below.

enum loop {NO, YES};/* htoi: convert hexadecimal string s to integer */int htoi(char s[]){int hexdigit, i, n;enum loop inhex;i = 0;if (s[i] == '0') {/* skip optional 0x or 0X */++i;if (s[i] == 'x' || s[i] == 'X')++i;}n = 0;/* integer value to be returned */inhex = YES;/* assume valid hexadecimal digit */for ( ; inhex = YES; ++i) {if (s[i] >= '0' && s[i] <= '9')hexdigit = s[i] – '0';else if (s[i] >= 'a' && s[i] <= 'f')hexdigit = s[i] – 'a' + 10;else if (s[i] >= 'A' && s[i] <= 'F')hexdigit = s[i] – 'A' + 10;elseinhex = NO;if (inhex == YES)n = 16 * n + hexdigit;}return n;}

Why do we use ‘n = 16 * n + hexdigit’ to compute the value ? The figure below gives the reason.

Similarly, we can usen = 8 * n + octdigitto convert octal string, we can usen = 2 * n + bindigitto convert binary string, too.

A program to convert hexadecimal string.

,趁着有脾气装潇洒,有本钱耍个性,

Why do we use n = 16 * n + hexdigit

相关文章:

你感兴趣的文章:

标签云: