求:两个函数的例子

bm1408 2008-08-02 12:10:53
求以下两个函数的测试代码

//***************************************************************
//* 函数名 : PackBCD
//* 功能描述 : 把字符串转换为BCD码
//* 入口参数 : char *InBuf 转入字符串(ASCII)
//* int len 转出字符串长度
//* 出口参数 : unsigned char *OntBuf 转出字符串(BCD)
//* 返回值 : -1 失败, 0 成功
//***************************************************************
int PackBCD( char *InBuf, unsigned char *OutBuf, int Len )
{
int rc; // Return Value
int ActiveNibble; // Active Nibble Flag
char CharIn; // Character from source buffer
unsigned char CharOut;// Character from target buffer
rc = 0; // Assume everything OK.
ActiveNibble = 0; // Set Most Sign Nibble (MSN)

for ( ; (Len > 0); Len--, InBuf++ )
{
CharIn = *InBuf;

if ( !isxdigit ( CharIn ) ) /* validate character */
{
rc = -1;
}
else
{
if ( CharIn > '9')
{
CharIn += 9; /* Adjust Nibble for A-F */
}
}
if ( rc == 0 )
{
CharOut = *OutBuf;
if ( ActiveNibble )
{
*OutBuf++ = (unsigned char)( ( CharOut & 0xF0) | ( CharIn & 0x0F) );
}
else
{
*OutBuf = (unsigned char)( ( CharOut & 0x0F) | ( (CharIn & 0x0F) << 4) );
}
ActiveNibble ^= 1; // Change Active Nibble
}
}
return rc;
}

//***************************************************************
//* 函数名 : UnpackBCD
//* 功能描述 : BCD码转为字符串
//* 入口参数 : unsigned char *InBuf 转入字符串(BCD)
//* int len 转出字符串长度
//* 出口参数 : char *OntBuf 转出字符串(ASCII)
//* 返回值 : -1 失败, 0 成功
//****************************************************************
int UnpackBCD( unsigned char *InBuf, char *OutBuf, int Len )
{
int rc;
unsigned char ch;
int active, i;

rc = active = 0;

for ( i = 0; i < Len; i++ )
{
ch = *InBuf;
if ( active )
{
(*OutBuf=(ch&0xF))<10 ? (*OutBuf+='0') : (*OutBuf+=('A'-10));
InBuf++;
}
else
(*OutBuf=(ch&0xF0)>>4)<10 ? (*OutBuf+='0'):(*OutBuf+=('A'-10));
active ^= 1;
if ( !isxdigit ( *OutBuf ) ) //validate character
{
rc = -1;
break;
}
OutBuf++;
}
*OutBuf = 0;
return ( rc );
}


3ks
...全文
131 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
autotyx 2009-01-10
  • 打赏
  • 举报
回复
顶起,
dding_inshili 2008-08-02
  • 打赏
  • 举报
回复

guzhilei1986 2008-08-02
  • 打赏
  • 举报
回复
沸顶
  • 打赏
  • 举报
回复
BCD转化
  • 打赏
  • 举报
回复
是要shell吗?????
lzr4304061988012 2008-08-02
  • 打赏
  • 举报
回复
帮顶

69,369

社区成员

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

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