ASC转换BCD,ASC2BCD

int ASC2BCD(const char* szASC,byte* szBDC)
{
	int szASCLen=strlen(szASC);
	byte * bpBCD = new byte[szASCLen/2];
	int nss=0,nOu=0;
	for (int x=szASCLen-1;x>=0;x--)
	{
		//取出字符串中的一个数值
		char char_1=*(szASC+x);
		//取出BCD码
		int nBDC;
		if (char_1 != '.')		nBDC=(char_1 & 0xF);
		else					nBDC=14;
		
		if ((++nOu)&0x01)
			bpBCD[nss]=(nBDC << 4);
		else
			bpBCD[nss++] += nBDC;
		
	}
	int nBit=0;
	if (nOu%2==0)	nBit=nOu/2-1;
	else			nBit=nOu/2;
	for (int y=0;y<=nOu/2;y++)
	{
		szBDC[y]=(bpBCD[nBit-y] << 4);
		szBDC[y]+=(bpBCD[nBit-y] >> 4);
	}
	return nBit;

//	memcpy(szBDC,bpBCD,sizeof(bpBCD)*2);
}

void CDotTestDlg::OnButton1() 
{
	char szTest[]={"123456789123456789.789"} ;
	
	int s=strlen(szTest);

	byte * szAn=new byte[s/2];
	int w=ASC2BCD(szTest,szAn);
	for(int x=0;x<=w;)
		TRACE("%x ",szAn[x++]);
}


事例:
输出:12 34 56 78 91 23 45 67 89 e7 89
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值