2013-04-25 63 views
1

我想,当我提取从位图我得到了场3,11,24,41,42在现场311N6 format位字段来这里收拾下面ISO_8583 MESSAGE包装

00 2F 60 01 23 06 00 08 00 20 20 01 00 00 c0 00 00 92 00 00 00 00 12 01 23 48 30 30 30 30 30 30 39 53 31 30 30 30 30 30 30 30 30 30 30 30 30 35

iso 8583消息,现场24N3 format和字段41,42ANS format..

在发送数据包之前,数字格式的字段需要是BCD格式的变化由功能

enter code here 

void vAscii2BCD(unsigned char *pucSrc, unsigned char *pucDst, int inSize) 
{ 
for (; inSize > 0; inSize -= 2, pucDst++) 
{ 
    if(!memcmp(pucSrc, "3D", 2)) 
    { 
     pucSrc += 2; 
     *pucDst = '='; 

    } 
    else 
    { 
     *pucDst = cHexDigit_to_Nibble1(*pucSrc++) << 4; 
     *pucDst |= cHexDigit_to_Nibble1(*pucSrc++); 
    } 
} 
printf("data is %s\n\n",pucDst); 
} 

,但是当我试图所有“00”转换为BCD并将其加入00到字符串的其余部分是failing..when我做的“00的strcat的“该消息然后在接收端它是未来的‘3030’

可有人建议我如何编码00,以便在接收端也都相应的00可以收到。

回答

2

C字符串终止于00(如你所说),所以任何尝试使用标准字符串操作(如%sstrcat)都将失败。你将不得不在哪里你自己保持长度char缓冲区操作(如果你需要打印或发送它,使用长度,或者在它自己遍历一次一个字节)。