字符串检测二——BCD转码

描述:给定一串数字,进行BCD编码,编码完成后以8Bit为单位输出对应的十进制数值,如果给定字符串是奇数位,编码时需要在最高位补0.

简单BCD码:十进制数值0~9,分别对应4bit二进制编码 0000~1001

给定数字串1234,对应BCD码为0001,0010,0011,0100,以8bit为单位输出十进制数值为:18 52

给定数字串123,对应BCD码为0000 0001 0010 0011(最高位补0),由高位开始以8bit为单位输出十进制数值为:135

输入:只考虑输入串是正整数且位数不超过10位的情况,异常不考虑。

输出:输出时不需要空格间隔。

样例输入 :123

样例输出: 135

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <iostream>
 4 #include <math.h>
 5 char* BCDChange(char a)
 6 {
 7         switch (a)
 8         {
 9            case ‘0‘:
10                    return "0000";
11                    break;
12            case ‘1‘:
13                    return "0001";
14                    break;
15            case ‘2‘:
16                    return "0010";
17                    break;
18            case ‘3‘:
19                    return "0011";
20                    break;
21            case ‘4‘:
22                    return "0100";
23                    break;
24            case ‘5‘:
25                    return "0101";
26                    break;
27            case ‘6‘:
28                    return "0110";
29                    break;
30            case ‘7‘:
31                    return "0111";
32                    break;
33            case ‘8‘:
34                    return "1000";
35                    break;
36            case ‘9‘:
37                    return "1001";
38                    break;
39         }
40 }
41 int main()
42 {
43         char input[10]="\0";
44         char output[10]="\0";
45         char tmp[3]="\0";
46         scanf("%s",input);
47         int len = 4 * strlen(input);
48         char bcd[100] ="\0";
49         for (size_t i = 0; i <strlen(input);i++)
50         {
51                 char *pBCD=BCDChange(input[i]);
52                 strcat(bcd,pBCD);
53         }
54         if ((strlen(bcd))%8)
55         {
56                 char addstr[256] = "0000";
57                 strcat(addstr,bcd);
58                 memset(bcd,0,strlen(bcd));
59                 strcpy(bcd,addstr);
60         }
61         int len_bcd = strlen(bcd);
62         printf("%s\n", bcd);
63         int a = 0;
64         for (size_t i = 0; i<strlen(bcd) ; i = i+ 8)
65         {
66                 a = 0;
67                 memset(tmp, 0, strlen(tmp));
68                 size_t j = 0;
69                 for (j = 0; j <8;j++)
70                 {
71                         if (bcd[i+j]==‘1‘)
72                         {
73                                 a = a + (int)pow(2, 7-j);
74
75                         }
76                 }
77                 _itoa(a, tmp, 10);
78                 strcat(output, tmp);
79         }
80         printf("%s\n",output);
81         getchar();
82         getchar();
83         return 0;
84 }
时间: 2024-11-06 12:04:59

字符串检测二——BCD转码的相关文章

用字符串生成二维码

需要导入Zxing.jar包 import android.graphics.Bitmap; import com.google.zxing.BarcodeFormat; import com.google.zxing.MultiFormatWriter; import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; public class ZxingCode { /** * 用字符串生成二

支付宝小程序开发——根据字符串生成二维码

支付宝小程序开发中,如果需要根据字符串生成二维码,那么可以直接使用qrcode插件,你无需引用js,直接使用开发者工具的npm功能就可以了. 一. 安装插件: 1.开发者工具左侧工具栏点击如图所示的图标(npm): 2.NPM包管理界面,输入框中输入 qrcode 并按回车键,等待插件安装完成: 二. 引用并使用插件: 1 //引用插件 2 const QRCode = require('qrcode'); 3 Page({ 4 data: { 5 imgSrc: '' 6 }, 7 onRea

二.jQuery源码解析之构建jQuery之构建函数jQuery的7种用法

一:$(selectorStr[,限制范围]),接受一个选择器(符合jQuery规范的字符串),返回一个jQuery对象;二:$(htmlStr[,文档对象]),$(html[,json对象])传入html字符串,创建一个新的dom元素 三:$(dom元素),$(dom元素集合)将dom元素转换成jQuery对象.四:$(自定义对象)封装普通对象为jQuery对象.五:$(回调函数)绑定ready事件监听函数,当Dom加载完成时执行.六:$(jQuery对象)接受一个jQuery对象,返回一个j

十二.jQuery源码解析之.eq().first().last().slice()

eq(index):将集合中的索引为index的元素提取出来. first():返回集合中的第一个元素. .last():防护集合中的最后一个元素. .slice(start[,end]):返回集合中的给定区间段的元素. first()和last()调用eq(),eq()通过slice()实现,slice()通过 .pushStack()实现. 相关源码 285行:用法很奇特,通过一个"+"把可能为字符串的i转换成一个数值. 300~301:先借用数组方法slice()从当前jQuer

Spring 循环引用(二)源码分析

Spring 循环引用(二)源码分析 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10117436.html) Spring 循环引用相关文章: <Spring 循环引用(一)一个循环依赖引发的 BUG>:https://www.cnblogs.com/binarylei/p/10325698.html <Spring 循环引用(二)源码分析>:https://www.cnblogs.com/binarylei/p/1032604

完整的用户代理字符串检测脚本

完整的用户代理字符串检测脚本,包括引擎.脚本.平台.Windows操作系统.移动设备和游戏系统. 1 var client = function(){ 2 3 //呈现引擎 4 var engine ={ 5 ie: 0, 6 gecko: 0; 7 webkit: 0; 8 khtml: 0; 9 opera: 0; 10 11 //完整的版本号 12 ver: null 13 }; 14 15 //浏览器 16 var browser = { 17 //主要浏览器 18 ie: 0, 19

漂亮的二维透视码

做了个合成二维透视码的网站:http://qrba.cc, 看起来还不错吧: -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

安卓图表引擎AChartEngine(二) - 示例源码概述和分析

首先看一下示例中类之间的关系: 1. ChartDemo这个类是整个应用程序的入口,运行之后的效果显示一个list. 2. IDemoChart接口,这个接口定义了三个方法, getName()返回值是listitem上显示的标题; getDesc()返回值是listitem上显示的描述内容. excute(context)返回值是一个Intent,当点击listitem后跳转到此Intent. 3. AbstractDemoChart类是一个抽象类,实现接口IDemoChart接口,这个类中封

ASP.NET实现用户在线检测的类源码

//online.cs(用户在线检测) /*程序实现思路: 该用户有以下几个属性: name:用户名 sessionID:用户ID,通过它唯一表示一个用户 iswhere :附加信息,用户当前所在位置 lasttime:用户登陆时间 curtime:本次刷新时间 在客户端,使用一个IFRAME,装载一个刷新页面,每隔XX秒更新一下他的名字对应的curtime,就表示他仍然在 在服务器端,建立一个守护线程,每隔固定时间就运行一遍,然后判断当前所有用户列表中的时间间隔是否超出了规定的时间,如果超出,