读书人

ASCII码与十六进制进制转换原理解决方

发布时间: 2012-04-13 13:50:24 作者: rapoo

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

读书人网 >C语言

热点推荐