BCD与ASCII码互转-C语言实现
- /*BCD 与 ASCII码转换*/
- /*******************************************************************
- 函数名: asc2bcd
- 功能描述:将ascii码转换为bcd码
- 参数:
- bcd:转换后的BCD码
- asc:需转换的ASCII码串
- len:需转换的ascii码串长度
- 返回值: uint32
- 0:成功
- 其他:失败
- ********************************************************************/
- uint32 asc2bcd(uint8* bcd, const uint8* asc, uint32 len);
- /*******************************************************************
- 函数名: bcd2asc
- 功能描述:将bcd码转换为ascii码串
- 参数:
- asc:转换的ASCII码串
- bcd:需转换的BCD码
- len:需转换的BCD码长度
- 返回值: uint32
- 0:成功
- 其他:失败
- ********************************************************************/
- uint32 bcd2asc(uint8* asc, const uint8* bcd, uint32 len);
- #include <assert.h>
- #include "utils.h"
- //基于查表实现BCD与Ascii之间的转换
- static uint8 bcd2ascii[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
- static uint8 ascii2bcd1[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- static uint8 ascii2bcd2[6] = {0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};
- uint32
- ASC2BCD(uint8 *bcd, const uint8 *asc, uint32 len)
- {
- uint8 c = 0;
- uint8 index = 0;
- uint8 i = 0;
- len >>= 1;
- for(; i < len; i++) {
- //first BCD
- if(*asc >= 'A' && *asc <= 'F') {
- index = *asc - 'A';
- c = ascii2bcd2[index] << 4;
- } else if(*asc >= '0' && *asc <= '9') {
- index = *asc - '0';
- c = ascii2bcd1[index] << 4;
- }
- asc++;
- //second BCD
- if(*asc >= 'A' && *asc <= 'F') {
- index = *asc - 'A';
- c |= ascii2bcd2[index];
- } else if(*asc >= '0' && *asc <= '9') {
- index = *asc - '0';
- c |= ascii2bcd1[index];
- }
- asc++;
- *bcd++ = c;
- }
- return 0;
- }
- uint32
- BCD2ASC (uint8 *asc, const uint8 *bcd, uint32 len)
- {
- uint8 c = 0;
- uint8 i;
- for(i = 0; i < len; i++) {
- //first BCD
- c = *bcd >> 4;
- *asc++ = bcd2ascii[c];
- //second
- c = *bcd & 0x0f;
- *asc++ = bcd2ascii[c];
- bcd++;
- }
- return 0;
- }
- int main(void)//测试程序
- {
- const unsigned char ascii[12] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C'};
- unsigned char bcd[6];
- ASC2BCD(bcd, ascii, 12, 0);
- int i = 0;
- printf("ascii = %s\n", ascii);
- for(; i < 6; i++) {
- printf("bcd = 0x%.2x\n", bcd[i]);
- }
- /*
- unsigned char ascii[13] = {0};
- const unsigned char bcd[6] = {0x01, 0x23, 0x45, 0xCD, 0xEF, 0xAB};
- BCD2ASC(ascii, bcd, 6, 0);
- printf("ascii = %s\n", ascii);
- */
- return 0;
- }
BCD与ASCII码互转-C语言实现的更多相关文章
- [PHP] chr和ord函数实现字符串和ASCII码互转
chr和ord函数是用来字符串和ASCII码互转的. ASCII码是计算机所能显示字符的编码,它的取值范围是0-255,其中包括标点.字母.数字.汉字等.在编程过程中,经常把指定的字符转化为ASCI ...
- 用php的chr和ord函数实现字符串和ASCII码互转
http://shenyongqang.blog.163.com/blog/static/22439113201002941856838/ chr和ord函数是用来字符串和ASCII码互转的. ASC ...
- 将一个字符与对应Ascii码互转
package nicetime.com.practies; /** * Java中将一个字符与对应Ascii码互转 1 byte = 8bit 可以表示 0-127 */public class G ...
- java 字符与ASCII码互转
字符转对应ASCII码 // 方法一:将char强制转换为byte char ch = 'A'; byte byteAscii = (byte) ch; System.out.println(byte ...
- js 字符与ASCII码互转
将字符转为ASCII码 var str = "A"; str.charCodeAt(); var str1 = 'a'; str1.charCodeAt(); 将ASCII码转为字 ...
- Java字符串跟ASCII码互转
1.由于项目中遇到,在服务器端起的jar包程序,给前台发消息后,前段收到的消息出现乱码情况,所以采取在后才发消息前先把消息字符串转成ASCII码再发往前台,前台采取在收到后台消息先把ASCII码转成字 ...
- js字符与ASCII码互转的方法
大写字母A-Z对应的ASCII码值是65-90 小写字母a-z对应的ASCII码值是97-122 将字母转为ascii码的方法: 将ascii码转为对应字母的方法:
- C语言 16进制与ascii码互转
/*把ASCII字符转换为16进制 */ uint8_t char_to_hex(const uint8_t *ch) { uint8_t value = 0; if(*ch >= 0 & ...
- 排坑·ASCII码为160的空格(nbsp)
阅文时长 | 2.83分钟 字数统计 | 1345.2字符 『排坑·ASCII码为160的空格(nbsp)』 编写人 | SCscHero 编写时间 | Wednesday, September 9, ...
随机推荐
- 【leetcode】Valid Triangle Number
题目: Given an array consists of non-negative integers, your task is to count the number of triplets c ...
- chalk插件 使终端输出的字带颜色
1.使终端输出红色字体: const chalk = require('chalk'); console.log(chalk.red('this is red!') 这时运行终端,打印的this is ...
- [luogu]P1026 统计单词个数[DP][字符串]
[luogu]P1026 统计单词个数 题目描述 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个).要求将此字母串分成k份(1&l ...
- 【CF1243D&CF920E】0-1 MST(bfs,set)
题意:给定一张n个点的完全图,其中有m条边权为1其余为0,求最小生成树的权值和 n,m<=1e5 思路:答案即为边权为0的边连接的联通块个数-1 用set存图和一个未被选取的点的集合,bfs过程 ...
- python3.x使用cxfreeze将.p打包成.exe
之前写了一个使用ffplay批量查看格式为h264的图片,每次抽帧后都要打开pycharm编译器来运行程序,然后才能正常查看图片,或者在其他没有安装python环境的电脑中运行,很不方便.为此,在网上 ...
- ubuntu彻底删除nginx
1.先执行一下命令: 1.1 删除nginx,–purge包括配置文件 sudo apt-get --purge remove nginx 1 1.2 自动移除全部不使用的软件包 sudo apt-g ...
- [BZOJ3812]主旋律:状压DP+容斥原理
分析 Miskcoo orz 令\(f[S]\)表示使得\(S\)这个点集强连通的方案数. 然后呢?不会了 考虑到将一个有向图SCC缩点后,得到的新图是一个DAG,所以我们可以类比带标号DAG计数的解 ...
- 3D Computer Grapihcs Using OpenGL - 14 OpenGL Instancing
如果我们需要绘制两个(或者多个)一样的立方体(或者物体),只是位置.缩放.旋转不一样,那么我们可以不需要多次将这个物体的顶点信息.颜色信息等发送到显卡,而是发送一次,绘制多次,仅仅是每次绘制之前应用不 ...
- DVWA--upload
文件上传漏洞 0x01了解文件上传漏洞的用处是用来干什么的 什么是文件上传漏洞? 文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执 ...
- 2017-03-04 idea破解
https://blog.csdn.net/qq_27686779/article/details/78870816 防止原址被删除,备份下,亲测可用 http://idea.java.sx/ 简单快 ...