请教一个c语言转换函数的问题

xuht 2010-04-08 02:00:47
各位大哥,这是小弟弟一次发帖求助。下面有个函数看不大明白,能给我讲讲吗。我知道功能是acs转bcd,但是因为要移植到java下,所以想知道详细是怎么做的。谢谢了!!!



void convert(byte *bcd,byte *asc, int asc_len )
{
unsigned char flag;
unsigned char is_high, by;
int j;

is_high = !(asc_len % 2);
flag = (asc_len % 2);
bcd[0] = 0x00;

for (j=0; j<asc_len; j++)
{
by = asc[j];
if (by==' ') by = 0;
if ( !(by&0x10) && by) by += 9;

if (is_high) bcd[(j+flag)/2] = by << 4;
else
{
by&=0x0f;
bcd[(j+flag)/2] |= by;
}
is_high = !is_high;
}
return ;/*BCDLen(j);*/
}
...全文
89 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
联邦 2010-10-27
  • 打赏
  • 举报
回复
你这段代码是在哪里的,正巧我也看到了!
ba_wang_mao 2010-04-08
  • 打赏
  • 举报
回复
先查找BCD码的格式
和ASC码的格式
xuht 2010-04-08
  • 打赏
  • 举报
回复
函数的输入就是普通的一个字符串。
谢谢楼上的几位大哥了,搞定了。
Arnold9009 2010-04-08
  • 打赏
  • 举报
回复
lz这个转换函数的输入是什么
这个函数应该不是一个通用的转换函数的,需要结合应用环境来理解
jackyjkchen 2010-04-08
  • 打赏
  • 举报
回复
一行一行解释没有价值,与其这样不如自己单步跟一遍,知道接口功能,知道如何移植,足矣
xuht 2010-04-08
  • 打赏
  • 举报
回复
恩,下次一定注意。
其实我是想请各位大哥具体帮我解释下这个函数是什么意思。
ypb362148418 2010-04-08
  • 打赏
  • 举报
回复
就将语法改了就行了,Java语法是怎样的,该就行了。而且,在这个版,问改为Java的问题,有点不合适
jackyjkchen 2010-04-08
  • 打赏
  • 举报
回复
语法跑通,其余不管


public void convert(byte []bcd,byte []asc, int asc_len )
{
byte by;
byte flag;
boolean is_high;
int j;

is_high = ((asc_len % 2) == 0);
flag = (byte) (asc_len % 2);
bcd[0] = 0x00;

for (j=0; j<asc_len; j++)
{
by = asc[j];
if (by==' ') by = 0;
if (((by&0x10) == 0) && (by != 0))
by += 9;

if (is_high) bcd[(j+flag)/2] = (byte) (by << 4);
else
{
by&=0x0f;
bcd[(j+flag)/2] |= by;
}
is_high = !is_high;
}
return ;/*BCDLen(j);*/
}
jackyjkchen 2010-04-08
  • 打赏
  • 举报
回复
算法移植是最简单的,改下语法即可,其他都不用管。

69,336

社区成员

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

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