iso 8583
以下にメッセージを詰め込もうとしています
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
ここで、ビットマップからビットフィールドを抽出すると、フィールド3,11,24,41,42
と3
フィールドが11
入っているフィールドが得られました。N6 format
24
N3 format
41,42
ANS 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 を文字列の残りの部分に追加しようとすると、失敗します..メッセージに "00" の strcat を実行すると、受信側で " 3030"
受信側でも対応するすべての 00 を受信できるように 00 をエンコードする方法を教えてください。