您的位置:首页 > 其它

字符串转成压缩bcd码

2015-07-24 16:35 260 查看
/*

* 字符串转成压缩bcd码

*/

/**************************************************************/

/*如果要对字符串转换为左靠齐的压缩bcd,则调用asc_to_bcd_left函数*/

char *str1 = "1234567";//str1为需要转换的字符串

int str_len = strlen(str1);

int bcd_len = (str_len+1)/2;

char *bcd = (char *)malloc(bcd_len);

memset(bcd,0,bcd_len);

asc_to_bcd_left(bcd,str1,str_len);//得到的名为bcd的字符串即为需要的压缩bcd码

/**************************************************************/

/**************************************************************/

/*如果要对字符串转换为右靠齐的压缩bcd,则调用asc_to_bcd_right函数*/

char *str1 = "1234567";//str1为需要转换的字符串

int str_len = strlen(str1);

int bcd_len = (str_len+1)/2;

char *bcd = (char *)malloc(bcd_len);

memset(bcd,0,bcd_len);

asc_to_bcd_right(bcd,str1,str_len);//得到的名为bcd的字符串即为需要的压缩bcd码

/**************************************************************/

//具体函数实现如下:

int asc_to_bcd(char * dest,const char *src)//参数dest为

{

unsigned char temp;

while(*src !='\0')

{

temp = *src;

*dest |= ((temp&0xf)<<4);

src++;

temp = *src;

*dest |= (temp&0xf);

src++;

dest++;

}

return 0;

}

//

int asc_to_bcd_right(char *dest,const char *src,int src_len)

//参数dest为申请的存放得到压缩bcd码的字符串,src为需要进行转换的字符串,src_len为src的长度即strlen(src)

{

unsigned char temp;

if((src_len %2) !=0)

{

*dest &= 0;

temp = *src;

*dest |= (temp&0xf);

src++;

dest++;

}

asc_to_bcd(dest,src);

return 0;

}

int asc_to_bcd_left(char *dest,const char *src,int src_len)

//参数dest为申请的存放得到压缩bcd码的字符串,src为需要进行转换的字符串,src_len为src的长度即strlen(src)

{

unsigned char temp;

if((src_len %2) !=0)

{

dest[src_len-1] &=0;

}

asc_to_bcd(dest,src);

return 0;

}

/***以上整理参考自http://blog.csdn.net/nocodelife/article/details/8233082****/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: