内存中用组合BCD码表示的十进制数,把它转换成ASCII码的c语言程序
5个回答
展开全部
一个ASCII码最多需要四个BCD码存储,也就是两个字节。比如‘A',ASCII码值是65,用BCD表示是0000,0000,0110,0101,’1‘的ASCII码值是49,用BCD表示是0000,0000,0100,1001。现在的问题是这些BCD码是如何提供的?这里假定,用整数值表示BCD码,如'e'的ASCII码值(101)10,用整数表示的BCD是0000,0001,0000,0001,也就是257。
#include <stdio.h>
const int MAXLEN = 128;
int main() {
char asciis[MAXLEN];
short bcds[] = {101,277,104,130,72,73,66};// AsDR12*
int i,j,t,p,m,k = 0,n = sizeof(bcds)/sizeof(bcds[0]);
for(i = 0; i < n; ++i) {
t = bcds[i];
m = 0;
for(j = 0; j < 4; ++j) {
p = (t & 0XF000) >> 12;
m = 10 * m + p;
t <<= 4;
}
asciis[k++] = m;
}
asciis[k] = '\0';
printf("%s\n",asciis);
return 0;
}
展开全部
1、内存中的组合BCD码,常以十六进制串形式存在,并且此形式的十六进制串从表面上看与十进制数表现形式一致,比如BCD码:0001 0000(2)=10(16)=10(10)(注意这里是BCD码,真正的16进制10并不等于10进制10),那么,只要把BCD码的16进制串转换成10进制数值,就得到相应的10进制数,就可以得到相应的ascii码。
2、c语言代码示例:
#include <stdio.h>
int main(int argc, char *argv[])
{
char n[]="101";//16进制BCD码
int ascm=0,i=0;
while(n[i])
{
ascm=ascm*10+(n[i]-'0');//10进制ascii码
i++;
}
printf("ascii:%d\nchar:%c\n",ascm,ascm);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
bcd 码是怎么存的 是一个字节存两个BCD还是?
// 一个 val 保存2个BCD
#define BCD_TA_BIN (val) ((val)&15+((val)>>4)*10)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a[i] = a[i] + '0'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询