【发布时间】:2014-08-11 11:21:25
【问题描述】:
我想知道如何使用 oscarsanderson 编写的 DL ISO-8583 Library(C 语言)解压缩 ISO 8583 消息?
例如,如果我有这样的消息:Here's my code
#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【问题讨论】:
-
到目前为止你尝试过什么?它是如何工作的?它是如何没有工作的?有什么特别的东西让你卡住了吗?我还建议您阅读the help pages 和the Stack Overflow question checklist。您可能还想了解如何创建Minimal, Complete, and Verifiable example。
-
我的
msg格式可能不正确。 -
@MikeSherrill'CatRecall' - 不,没关系
-
您的
char msg[]不是有效的 ISO8583 消息。我想你的意思是char msg[] = "\x02\x10\x03"...。并且不要使用strlen,这不是字符串。 -
你是对的 Matt McNabb 我的信息不正确但我遇到的问题是如何在套接字中发送 \00 因为一旦我写了 "\x02\x00\x03" 并通过套接字发送我收到的是 \5c00 而不是 \00。知道吗?我正在使用来自摩洛哥的 m2m 交换机