c++ 十进制、十六进制和BCD的相互转换
- #include <stdio.h>
- #include <string.h>
- #include <iostream>
- using namespace std;
- /////////////////////////////////////////////////////
- //
- //功能:二进制取反
- //
- //输入:const unsigned char *src 二进制数据
- // int length 待转换的二进制数据长度
- //
- //输出:unsigned char *dst 取反后的二进制数据
- //
- //返回:0 success
- //
- //////////////////////////////////////////////////////
- int convert(unsigned char *dst, const unsigned char *src, int length)
- {
- int i;
- for (i = 0; i < length; i++)
- {
- dst[i] = src[i] ^ 0xFF;
- }
- return 0;
- }
- //////////////////////////////////////////////////////////
- //
- //功能:十六进制转为十进制
- //
- //输入:const unsigned char *hex 待转换的十六进制数据
- // int length 十六进制数据长度
- //
- //输出:
- //
- //返回:int rslt 转换后的十进制数据
- //
- //思路:十六进制每个字符位所表示的十进制数的范围是0 ~255,进制为256
- // 左移8位(<<8)等价乘以256
- //
- /////////////////////////////////////////////////////////
- unsigned long HextoDec(const unsigned char *hex, int length)
- {
- int i;
- unsigned long rslt = 0;
- for (i = 0; i < length; i++)
- {
- rslt += (unsigned long)(hex[i]) << (8 * (length - 1 - i));
- }
- return rslt;
- }
- /////////////////////////////////////////////////////////
- //
- //功能:十进制转十六进制
- //
- //输入:int dec 待转换的十进制数据
- // int length 转换后的十六进制数据长度
- //
- //输出:unsigned char *hex 转换后的十六进制数据
- //
- //返回:0 success
- //
- //思路:原理同十六进制转十进制
- //////////////////////////////////////////////////////////
- int DectoHex(int dec, unsigned char *hex, int length)
- {
- int i;
- for (i = length - 1; i >= 0; i--)
- {
- hex[i] = (dec % 256) & 0xFF;
- dec /= 256;
- }
- return 0;
- }
- /////////////////////////////////////////////////////////
- //
- //功能:求权
- //
- //输入: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, length - 1 - 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 = length - 1; i >= 0; i--)
- {
- temp = Dec % 100;
- Bcd[i] = ((temp / 10) << 4) + ((temp % 10) & 0x0F);
- Dec /= 100;
- }
- return 0;
- }
- //main函数
- int main(int argc, char** argv)
- {
- //BCD码转十进制
- unsigned char BCD[3] = { 0x00, 0x53, 0x20 };
- int dec_bcd = BCDtoDec(BCD, 3);
- cout << "dec_bcd : " << dec_bcd << endl;
- //十进制转BCD码
- unsigned char tmp_bff[3] = "";
- DectoBCD(dec_bcd, tmp_bff, 3);
- for (int i = 0; i < 3; ++i)
- {
- //cout << "tmp_buff[" << i << "]: " << tmp_bff[i] << endl;
- printf("tmp_bff[%d] = 0x%02X\n", i, tmp_bff[i]);
- }
- cout << endl << endl;
- //十六进制转十进制
- unsigned char Hex[3] = { 0x00, 0x53, 0x20 };
- int dec_hex = HextoDec(Hex, 3);
- cout << "dec_hex: " << dec_hex << endl;
- //十进制转十六进制
- unsigned char hex_bff[3] = "";
- DectoHex(dec_hex, hex_bff, 3);
- for (int i = 0; i < 3; ++i)
- {
- printf("hex_bff[%d] = 0x%02X\n", i, hex_bff[i]);
- }
- system("pause");
- return 0;
- }
c++ 十进制、十六进制和BCD的相互转换的更多相关文章
- c++ 十进制、十六进制和BCD的相互转换,与打印printf,与函数调用
转载: https://blog.csdn.net/sjhuangx/article/details/49947179 c++ 十进制.十六进制和BCD的相互转换 https://blog.csd ...
- ASCII码表(二进制 十进制 十六进制)
css里,允许使用转义字符\+ascii16进制形式; 例如: e的ascii 16进制是65,我们就写为\65 expression -> expr\65ssion 二进制 十进制 十六进制 ...
- iOS十六进制和字符串的相互转换
转换代码,崩溃日志有些是十六进制 NSString *dictString = [dict JSONFragment];//组合成的 dictString==={"content" ...
- Delphi进制转换(二进制/十进制/十六进制)
http://www.cnblogs.com/ywangzi/archive/2012/12/12/2815219.html Delphi进制转换(二进制/十进制/十六进制) 2009-11-2 ...
- Python 进制转换 二进制 八进制 十进制 十六进制
Python 进制转换 二进制 八进制 十进制 十六进制 作者:方倍工作室 地址:http://www.cnblogs.com/txw1958/p/python3-scale.html 全局定义一定不 ...
- Python进制转换(二进制/八进制/十进制/十六进制)
Python 进制转换 二进制 八进制 十进制 十六进制 作者:方倍工作室 地址:http://www.cnblogs.com/txw1958/p/python3-scale.html 全局定义 ba ...
- Java类型转换工具类(十六进制—bytes互转、十进制—十六进制互转,String—Double互转)
/** * 数据类型转换工具类 * @author cyf * */ public class NumConvertUtil{ /** * bytes 转16进制字符串 * @param bArray ...
- delphi 十进制十六进制转换
delphi有提供十进制转换成十六进制的函数: IntToStr(); 返回值为String // 十进制转十六进制 var i: integer; str: string; begin i := ...
- C++ 进制转换 十进制十六进制八进制二进制相互转换
思路: 下面我把相互转换的所有类型都写出来了.实际上都是通过十进制中转的,这样比较简单,写出X进制转成十进制和从十进制转成X进制的两份代码直接拷贝就完成了剩余的部分.哦,对,自己封装了一个charTo ...
随机推荐
- pushd&popd&dirs命令
dirs 显示当前目录栈中的所有记录 -p 一个目录一行显示 -l 以完整格式显示 -c 删除目录栈中的所有记录 -v 每行一个目录来显示,每个目录前加上编号 +N 从左到右的第n个 ...
- 2019强网杯web upload分析(pop链)
参考链接:https://blog.csdn.net/qq_41173457/article/details/90724943 注意 只要namespace相同那就可以直接实例化同一namespace ...
- 微信小程序-饮食日志_开发记录03
这段时间主要是收尾阶段. 美化界面,排版分部等. 并进行上传,审核. 环境部署一直出现问题,所以测试版食物查找查找不到. 主要问题是:https://的网页证书没有通过审核. 所以现在推行开发,调试版 ...
- Python 字符串Ⅱ
Python 字符串格式化 Python 支持格式化字符串的输出 .尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中. 在 Python 中,字符 ...
- Linux基础教程 linux下使用find命令根据系统时间查找文件用法
LinuxFind 兄弟连Linux培训 总结这些时间戳包括 复制代码代码如下: mtime 文件内容上次修改时间 atime 文件被读取或访问的时间 ctime 文件状态变化时间 mtime 和 ...
- python实现的ocr接口
太累了,,有时间再补解释 import pytesseract import requests from PIL import Image from PIL import ImageFilter fr ...
- 为Sublime Text 3设置优雅的字体
本文使用的Sublime Text 3版本是3.2.1(build 3207),这个版本默认对中文的支持很糟糕,中国程序员很费眼睛,需要做一番设置. 首选需要在本机安装漂亮的字体,我们选用的是YaHe ...
- C++获取寄存器eip的值
程序中需要打印当前代码段位置 如下 #include <stdio.h> #include <stdlib.h> #include <math.h> #ifdef ...
- ffmpeg精简编译
项目上需要用到ffmpeg的接收功能,把rtp流转封装为ts吐udp组播流,不涉及编码,所以需要精简一下脚本如下: #!/bin/bash dir=$(pwd) echo $dir rm -rf $d ...
- Python深度学习读书笔记-6.二分类问题
电影评论分类:二分类问题 加载 IMDB 数据集 from keras.datasets import imdb (train_data, train_labels), (test_data, t ...