搜索
bottom↓
回复: 3

抛砖引玉:一个将4个字节的十六进制转为十进制的程序

[复制链接]

出10入12汤圆

发表于 2012-2-18 13:34:44 | 显示全部楼层 |阅读模式
在门禁行业经常要用到将十六进制卡号转为十进制的情况,当然对于比较小的数,直接除,取余就好了。但是对于这种超过10亿的数,我没有找到更好方法,为此,我上传自己写的程序,希望大家共同探讨

u32 Card_Num,tee;
u8 syy,qwbw,sww,qb,sg,i;

Card_Num=0XFFFFFFFF       

i=0;
        while(Card_Num>=1000000000)
        {
            Card_Num=Card_Num-1000000000;
                i++;
        }
        syy=i<<4;

    i=0;
        while(Card_Num>=100000000)
        {
            Card_Num=Card_Num-100000000;
                i++;
        }
        syy=syy+i;

    i=0;
        while(Card_Num>=10000000)
        {
            Card_Num=Card_Num-10000000;
                i++;
        }
        qwbw=i<<4;

    i=0;
        while(Card_Num>=1000000)
        {
            Card_Num=Card_Num-1000000;
                i++;
        }
        qwbw=qwbw+i;

        i=0;
        while(Card_Num>=100000)
        {
            Card_Num=Card_Num-100000;
                i++;
        }
        sww=i<<4;

        i=0;
        while(Card_Num>=10000)
        {
            Card_Num=Card_Num-10000;
                i++;
        }
        sww=sww+i;

        i=0;
        while(Card_Num>=1000)
        {
            Card_Num=Card_Num-1000;
                i++;
        }
        qb=i<<4;

        i=0;
        while(Card_Num>=100)
        {
            Card_Num=Card_Num-100;
                i++;
        }
        qb=qb+i;

        i=0;
        while(Card_Num>=10)
        {
            Card_Num=Card_Num-10;
                i++;
        }
        sg=i<<4;

        sg=sg+Card_Num;

出0入0汤圆

发表于 2012-2-19 08:24:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-19 09:09:41 | 显示全部楼层
很长。先写个两字节的BCD转换函数,之后把数值分解为4位的再调用两字节的就好了,可以弄个循环来执行;
两字节的也可以这样弄,相信多几次调用不会对时间影响太大

出0入0汤圆

发表于 2012-2-19 10:21:25 | 显示全部楼层
syy=十亿/亿?
qwbw=千万/百万?
1 现有的代码可以再优化一下,将重复的部分写成内联函数。
2 Card_Num用取膜的方式直接获取它的数位,然后再移位转为syy的值,可以省去方法1的循环步骤,不知是否可行
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 01:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表