⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nstr2bcd.cpp

📁 BREW平台上对BCD的编码
💻 CPP
字号:
// Nstr2BCD.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "string.h"
#define RIGHT_ALIGN	1	//右结合
/*/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
函数名:	Nstr2BCD
功能:	把一个ASCII数字转换成一串8421BCD码。
参数:	[in]NStr,待转换的数字串;
			[in]NLen,待转换的数字串长度;
			[out]BCDsb,存储8421BCD码。
			[in]align,结合方式:
				1,表示右结合。
				其它,表示左结合。
返回值:成功,返回BCD串长;失败,返回-1。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
int Nstr2BCD(void *NStr, int NLen, char *BCDsb, int align)
{
	int  i, j, n;
	char *sn = (char * )NStr;
//	NLen = 5;//strlen(sn);
	n = (NLen + 1) / 2;				//BCD码串长
	if(align == RIGHT_ALIGN)		//有结合
	{
		for(i = NLen - 1, j = n - 1; j >= 0; j--)
		{
			if(i >= 0)
			{
				if(sn[i] < '0' || sn[i] > '9')
					return -1;
				BCDsb[j] = sn[i] - '0';
				i--; 
			}
			if(i >= 0)
			{
				if(sn[i] < '0' || sn[i] > '9') 
					return -1;
				BCDsb[j] = (sn[i] - '0') << 4 | BCDsb[j];
				i--;
			}
		}
	}
	else //左结合
	{
		for(i = 0, j = 0; i < NLen; i++, j++)
		{
			if(sn[i] < '0' || sn[i] > '9')
return -1;
			BCDsb[j] = (sn[i] - '0') << 4;
			i++;
			if(i < NLen)
			{
				if(sn[i] < '0' || sn[i] > '9')
				return -1;
				BCDsb[j] = BCDsb[j] | (sn[i] - '0');
			}
		}
	}
	return n;
}

int main(int argc, char* argv[])
{
	char strConv[10];
	char strConved[128];
	sprintf(strConv,"%s","36974");
	Nstr2BCD(strConv,strlen(strConv),strConved,1);

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -