十六进制数0x12表示十进制21,这种表示方法与BCD码类似。只需要封装一个函数将其进行转码为常规的数就行了。
// 注意c的值得范围,代表的数不能超过60000,即c只能为0x00、0x10、0x20、0x30、0x40、0x50、0x60;
// 如需使用更大的数,需要将unsigned int换为unsigned long long,返回值处同换。
unsigned int h2d(unsigned char a, unsigned char b, unsigned char c,)
{
a=(a/0x0f)+(a%0x0f)*10; b=(b/0x0f)+(b%0x0f)*10;
c=(c/0x0f)+(c%0x0f)*10;
return (unsigned int)c*10000+(unsigned int)b*100+(unsigned int)a;
}
然后只需要调用这个函数就行了;
//为了不不改变原来abc的值,重新定义暂存变量
unsigned int hd;
hd=h2d(a, b, c);
while(hd--)
{
//需要循环执行的代码;
}
|