我想知道如何使用 DL ISO-8583 Library 解压缩 ISO 8583 消息(C语言)oscarsanderson写的?
例如,如果我有这样的消息:这是我的代码
#include "dl_iso8583.h"
#include "dl_iso8583_defs_1993.h"
#include "dl_output.h" // for 'DL_OUTPUT_Hex'
#define ISOHEADER 4
#define ISOHEADERSTR "%04d"
int main ( void )
{
DL_ISO8583_HANDLER isoHandler;
DL_ISO8583_MSG isoMsg;
DL_UINT8 packBuf[1000];
DL_UINT16 packedSize;
char msg[]="0210323A40010A4180103800000000000000000420050805011392120805042004225132072000001000000115604000800411 163011511463331563GBAAASDD ERRR 1300101B54391001000017654350000000000090300000268410000000300000000000000898100009431000000000000000000 000000000000000036000299";
unsigned short iso_req_size,iso_resp_size;
char iso_header[ISOHEADER+1];
char iso_req_buf[10000];
char iso_resp_buf[10000];
/* get ISO-8583 1993 handler */
DL_ISO8583_DEFS_1993_GetHandler(&isoHandler);
DL_ISO8583_MSG_Init(NULL,0,&isoMsg);
// Unpack message
DL_ISO8583_MSG_Init(NULL,0,&isoMsg);
(void)DL_ISO8583_MSG_Unpack(&isoHandler,msg,strlen(msg),&isoMsg);
DL_ISO8583_MSG_Dump(stdout,NULL,&isoHandler,&isoMsg);
DL_ISO8583_MSG_Free(&isoMsg);
return 0;
}
我想在解包邮件时检索这些字段:
[000]: 210 [003]: 380000 [004]: 000000000000 [007]: 0420050805 [011]: 011392 [012]: 120805 [013]: 0420 [015]: 0422 [018]: 5132 [039]: 00 [049]: 000
最佳答案
您必须将您的消息从十六进制格式转换为二进制格式。 像这样
binMsg[0]=0x02
binMsg[1]=0x10
binMsg[2]=0x32
binMsg[3]=0x3A
binMsg[4]=0x40
直到最后一口。
并使用:
(void)DL_ISO8583_MSG_Unpack(&isoHandler,binMsg,strlen(msg)/2,&isoMsg);
关于c - ISO 8583 c 库解压消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25242055/