1. 16进制数为0~F的组合(例如3FFF, 就像10进制数是0~9的组合一样), 而ASCII码是一组符号集合,
它用一个8位(一个字节)的二进制数来表示字符(因为计算机用二进制数来运算), 其中0~9对应的二进制数为0x30~0x39,
A~F对应的二进制数为0x41~0x46 (小写a~f为0x61~0x66).
2. 将16进制数转换为ASCII码就是将0~F转换为字符"0"~"F" (在计算机存储的表示为0x30~0x46). 转换的算法可以多种, 比较简单的算法如下:
a) 定义一个数组
const byte ASCII[]={0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46}; // byte 为一个字节的定义
假设i为存储单个16进制的数字, 则用ASCII[i]即可获得相应的ASCII码
b) 也可以用计算的方式
假设i中存储单个16进制的数字,
if (i > 9)
{
ascii = 0x40 + (i - 9); // A~F
}
else
{
ascii = 0x30 + i; // 0~9
}
3. 多位数的16进制数可以通过逐位分解实现, 例如0x3AD0, 可以分解为3, A, D, 0转换. 每位16进制数占半个字节, 所以很容易利用移位(连续左移4bits)进行分离.
温馨提示:答案为网友推荐,仅供参考