码迷,mamicode.com
首页 > 其他好文 > 详细

字符串检测二——BCD转码

时间:2015-04-27 19:49:50      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

描述:给定一串数字,进行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 }

 

字符串检测二——BCD转码

标签:

原文地址:http://www.cnblogs.com/jingliming/p/4439732.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!