php中文网 | cnphp.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 446|回复: 0

bcd码和进制相互转换

[复制链接]

3154

主题

3164

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
1
威望
0
积分
7986
贡献
0
注册时间
2021-4-14
最后登录
2024-11-25
在线时间
764 小时
QQ
发表于 2022-7-11 12:39:12 | 显示全部楼层 |阅读模式
// dectobcd.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <math.h>

// 功能:求权
//
// 输入: int base                    进制基数
//      int times                   权级数
//
// 输出:
//
// 返回: unsigned long               当前数据位的权
//
//
unsigned long power(int base, int times)
{
    int i;
    unsigned long rslt = 1;

    for(i=0; i<times; i++)
        rslt *= base;

    return rslt;
}
// 功能: BCD 转 10 进制
//
// 输入: const unsigned char *bcd     待转换的 BCD 码
//      int length                   BCD 码数据长度
//
// 输出:
//
// 返回: unsigned long               当前数据位的权
//
// 思路:压缩 BCD 码一个字符所表示的十进制数据范围为 0 ~ 99, 进制为 100
//      先求每个字符所表示的十进制值,然后乘以权
//
unsigned long  BCDtoDec(const unsigned char *bcd, int length)
{
     int i, tmp;
     unsigned long dec = 0;

     for(i=0; i<length; i++)
     {
        tmp = ((bcd[i]>>4)&0x0F)*10 + (bcd[i]&0x0F);   
        dec += tmp * power(100, i);         
     }
     return dec;
}

//
// 功能:十进制转 BCD 码
//
// 输入: int Dec                      待转换的十进制数据
//      int length                   BCD 码数据长度
//
// 输出: unsigned char *Bcd           转换后的 BCD 码
//
// 返回: 0  success
//
// 思路:原理同 BCD 码转十进制
//
//
int DectoBCD(int Dec, unsigned char *Bcd, int length)
{
     int i;
     int temp;

     for(i=0; i<length; i++)
     {
         temp = Dec%100;
         Bcd[i] = ((temp/10)<<4) + ((temp%10) & 0x0F);
         Dec /= 100;
     }
     return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
        int t=137000000;
        int tmp;
        unsigned char string[20];
        memset(string,0,20);

        DectoBCD(t,string,5);
        tmp = BCDtoDec(string,5);
        while(1);
        return 0;
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|php中文网 | cnphp.com ( 赣ICP备2021002321号-2 )

GMT+8, 2024-11-27 12:24 , Processed in 0.212833 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

申明:本站所有资源皆搜集自网络,相关版权归版权持有人所有,如有侵权,请电邮(fiorkn@foxmail.com)告之,本站会尽快删除。

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