此方法可计算四位十六进制数(即unsigned short所在范围)
unsigned char hex[16] = { 0X00,0X01,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09,0X0A,0X0B,0X0C,0X0D,0X0E,0X0F };
//首先将16进制的数列举出来
unsigned short addr ,val ;
//定义两个变量,addr 为存储转换为16进制后的结果,val 为需要转换的值0 - 65535
addr = hex[val/ 4096] * 4096 + hex[val% 4096 / 256] * 256 + hex[val% 4096 % 256 / 16] * 16 + hex[val% 16];
/*
假设 val = 4660
hex[val / 4096] * 4096 = 4660 / 4096 = hex[1] = 0X01 * 4096 = 0X1000
hex[val % 4096 / 256] * 256 = 4660 % 4096 / 256 = 564 / 256 = hex[2] = 0X02 * 256 = 0X200
hex[val % 4096 % 256/ 16] * 16 = 4660 % 4096 % 256 / 16 = 52 / 16 = hex[3] = 0X03 * 16 = 0X30
hex[val % 16] = 4660 % 16 = 4660 - 4656 % 16 = hex[4] = 0X04
0X1000 + 0X200 + 0X30 + 0X04 = 0X1234
*/