ASCII码与十六进制进制转换原理
1 我看了半天ASCII码转换成十六进制的转换程序,看不懂。其实我感觉是原理摸不清楚,请大侠们赐教。
[解决办法]
- C/C++ code
owenliang@linux-7lsl:~/csdn/src> cat main.cpp#include <stdlib.h>#include <stdio.h>#include <string.h>void byte2hex(char ch, char *out){ static const char *tab = "0123456789ABCDEF"; out[0] = tab[ch >> 4]; out[1] = tab[ch & 0x0f]; out[2] = '\0';}int main(){ char out[10]; byte2hex(0x2f, out); printf("0x%s\n", out); return 0;}
[解决办法]
这个是十六进制的ASCII码字符串向十进制的数转换(只不过是用字符存储)
因为十六进制是从0到F,而十进制只有0到9,所以(十六进制的0-9向十进制转换)和(十六进制A-F向十进制转换)是不同的,前者(0-9)只需要减'0'字符就好了(因为'0'字符对应的十进制int型是30,而不是int型的0,同样的字符'1'=31(int型)),而后者(A-F)就需要先减去'A'字符(那么'A'就变成了int型的0),所以就需要加10