请教一个BCD码(8421码)的问题

slmax1 2017-03-14 08:28:36
最近公司的一个项目,需要与上层平台进行通信.
上层平台给我们分配了一个编号是A0089
他们说这是一个BCD码.需要把A转换为10,看得我云里雾里的.
请教一下它的内存布局是怎样的.


{0x0A, 0x00, 0x00, 0x08, 0x09}
{0x00, 0x00, 0x0A, 0x00,0x89}

经测试两种都不对.
...全文
341 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
vnvlyp 2017-03-15
  • 打赏
  • 举报
回复
BCD难道不是0 ~ 9么。。0xA或者10是什么鬼
Pingo520 2017-03-15
  • 打赏
  • 举报
回复
目测第一种是对的{0X0A,0X00,0X00,0X08,0X09}
slmax1 2017-03-15
  • 打赏
  • 举报
回复
解决了.来人接分.
slmax1 2017-03-15
  • 打赏
  • 举报
回复
{0x00, 0x00, 0x10, 0x00,0x89} 不知道这种对不对.....明天去单位试试
引用 1 楼 vcf_reader 的回复:
哪两种? ?
{0x0A, 0x00, 0x00, 0x08, 0x09} {0x00, 0x00, 0x0A, 0x00,0x89} 这两种
赵4老师 2017-03-15
  • 打赏
  • 举报
回复
仅供参考:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
unsigned int iv,i;
unsigned char BCD[5];//定长10位BCD码
unsigned char sv[11];
void main() {
    iv=123456789;//最大10位无符号正整数
    //INT2BCD
    sprintf(sv,"%010u",iv);
    for (i=0;i<10;i+=2) {
        BCD[i/2]=(sv[i]<<4)|(sv[i+1]&0x0F);
    }
    printf("BCD=%02x%02x%02x%02x%02x\n",BCD[0],BCD[1],BCD[2],BCD[3],BCD[4]);
    //BCD2INT
    for (i=0;i<10;i+=2) {
        sv[i]='0'|(BCD[i/2]>>4);
        sv[i+1]='0'|(BCD[i/2]&0x0F);
    }
    sscanf(sv,"%010u",&iv);
    printf("iv=%010u\n",iv);
    getch();
}
vcf_reader 2017-03-14
  • 打赏
  • 举报
回复
哪两种? ?

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧