搜索
bottom↓
回复: 9

请教一个将十六进制转换成十进制的写法!!!

[复制链接]

出0入0汤圆

发表于 2006-4-30 01:47:41 | 显示全部楼层 |阅读模式
比如将十六进制的OCR1A转换成十进制!!小弟"磨齿难忘"!!!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2006-4-30 08:32:43 | 显示全部楼层
除10取余得个位,结果再除10取余得10位....

直到商为0,只有余数.

出0入0汤圆

 楼主| 发表于 2006-4-30 09:33:08 | 显示全部楼层
谢了大虾,原来我也这样写的不过写错了!!!

出0入0汤圆

发表于 2006-4-30 10:03:04 | 显示全部楼层
//========一个压缩的BCD码型CHAR转换为一个十六进制CHAR型=========

unsigned char CharBCDToCharHEX( unsigned char temp )

{

        unsigned char a;

        a = temp & 0x0f;

        a += ( temp >> 4 ) * 10;         

        return( a );

}





//=========一个十六进制的CHAR型转换为一个压缩的BCD码INT型========

unsigned int CharHEXToIntBCD( unsigned char temp )

{

        unsigned char a;

        unsigned int b;

        a =  temp % 10;   

    temp = temp / 10;  

    a += ( ( temp % 10 ) << 4 );             

    b = ( temp / 10 );

    b = ( b << 8 );

    b += a;

    return ( b );     

}





//=========一个压缩的BCD码Long型转换为一个十六进制的Long型==========

unsigned long LongBCDToLongHEX( unsigned long temp )

{

        unsigned long b;

        b =  (   temp                                  >> 28 ) * 10000000;

        b += ( ( temp & 0x0f000000 ) >> 24 ) * 1000000 ;

        b += ( ( temp & 0x00f00000 ) >> 20 ) * 100000  ;

        b += ( ( temp & 0x000f0000 ) >> 16 ) * 10000   ;

        b += ( ( temp & 0x0000f000 ) >> 12 ) * 1000    ;

        b += ( ( temp & 0x00000f00 ) >> 8  ) * 100     ;

        b += ( ( temp & 0x000000f0 ) >> 4  ) * 10      ;

        b += ( ( temp & 0x0000000f )       )           ;

        return( b );

}





//=========一个压缩的BCD码INT型转换为一个十六进制的INT型==========

unsigned int IntBCDToIntHEX( unsigned int temp )

{

        unsigned int b;

        b = ( temp >> 12) * 1000;

        b += ( ( temp & 0x0f00 ) >> 8 ) * 100;

        b += ( ( temp & 0x00f0 ) >> 4 ) * 10;

        b += ( temp & 0x000f );

        return( b );

}





//==========一个十六进制的INT型转换为一个压缩的BCD码INT型=========

unsigned int IntHEXToIntBCD( unsigned int temp )  

{

    unsigned char a,b;

    unsigned int c;   

    a = temp % 10;

    a += ( ( ( temp / 10 ) % 10 ) << 4 );

    temp = temp / 100;

    b = temp % 10;

    b += ( ( ( temp / 10 ) % 10 ) << 4 );

    c = b;

    c = ( c << 8 );

    c += a;   

    return( c );

}





//==========一个十六进制的INT型转换为一个压缩的BCD码LONG型=========

unsigned long IntHEXToLongBCD( unsigned int temp )  

{

    unsigned char a,b;

    unsigned long c;

    a = temp % 10;

    a += ( ( ( temp / 10 ) % 10 ) << 4 );

    temp = temp / 100;

    b = temp % 10;

    b += ( ( ( temp / 10 ) % 10 ) << 4 );

    c = temp / 100 ;

    c = (c <<8);

    c += b;

    c = (c<<8);   

    return( a + c );

}





//==========一个十六进制的LONG型转换为一个压缩的BCD码LONG型=========

unsigned long LongHEXToLongBCD( unsigned long temp )

{

        unsigned char i;

        unsigned long l_temp = 0;

        for ( i = 0; i <= 7; i ++ )

        {

                l_temp += ( ( temp % 10 ) << ( i * 4 ) );

                temp = temp / 10;

        }

        return(l_temp);

}

出0入0汤圆

发表于 2006-4-30 13:30:02 | 显示全部楼层
我也来一段汇编的:

ldi r16,0x55    ;要转换的数

ldi r17,10



DIV8:   SUB R19,R19

   LDI R18,9

D4:   ROL R16

   DEC R18

   BRNE D5

D5:   ROL R19

   SUB R19,R17

   BRCC D6

   ADD R19,R17

   CLC

   RJMP D4

D6:   SEC  

   RJMP D4



结果:

R16为商(十位)8

R19为余数(个位)5

如果百位以上就自己再加了哈


-----此内容被losan于2006-04-30,13:32:23编辑过

出0入0汤圆

发表于 2010-5-17 17:01:30 | 显示全部楼层
这个mark

出0入0汤圆

发表于 2015-3-24 22:55:29 | 显示全部楼层
汇编的比较牛逼....

出0入0汤圆

发表于 2015-3-25 07:58:03 来自手机 | 显示全部楼层
着坟挖得......

出0入0汤圆

发表于 2015-3-26 22:41:44 | 显示全部楼层
路过,留下记号...

出0入0汤圆

发表于 2015-3-26 22:44:34 | 显示全部楼层
这个贴挖的深
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-23 12:32

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

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