java 8583报文解析_ISO8583报文解析

1 packagecom.handle8583;23 importjava.io.UnsupportedEncodingException;4 importjava.util.ArrayList;5 importjava.util.Collections;6 importjava.util.Comparator;7 importjava.util.HashMap;8 importjava.util...
摘要由CSDN通过智能技术生成

1 packagecom.handle8583;2

3 importjava.io.UnsupportedEncodingException;4 importjava.util.ArrayList;5 importjava.util.Collections;6 importjava.util.Comparator;7 importjava.util.HashMap;8 importjava.util.List;9 importjava.util.Map;10 importjava.util.Properties;11 importjava.util.Set;12

13 importcom.parseToString.FileTools;14 /*

15 * @description:16 * 准备包含8583报文头、报文类型标识、位图、报文体各域的ISO8583metadata.xml配置文件17 * 准备8583十六进制报文18 * 使用SAXReader读取ISO8583metadata.xml文件,将文件中的内容解析成Map19 * 使用文件输入流读取8583十六进制报文到字节数组输出流,字节数组输出流转换为字节数组20 * 将字节数组转换成字符串,此刻字符串的内容与十六进制里的内容完全一致,并将字符串换行、空去掉21 * 将字符串转换成字节数组(即将十六进制转换成十进制的字节数组)22 * 解析报文头(根据ISO8583metadata.xml中:isBCD确定编码、length确定长度、encoding确定编码、name作为标签名。现根据长度截取,再判断isBCD编码,根据相应的编码解码。)23 * 解析报文类型标识(根据长度,byte子数组,根绝对应的encoding编码进行解码)24 * 解析位图(判断第一个字节的二进制最高位是否为1,为1则使用扩展位图,为0则不使用扩展位图;根据长度获取byte字数组,转换成对应的二进制;根据二进制判断存在哪些域有值)25 * 解析报文体(将存在的域循环进行处理:判断是否变长,如果变长,先获取变长所表示的长度值,比如n..11(LLVAR)为两位变长,有两个字节表示长度,先拿两个字节计算本域所占几个字节,再获取相应字节数,再根据encoding编码进行解码;如果非变长,直接根据length获取长度,再根据encoding编码进行解码)26 * 将解析完成的8583报文信息所在的Map排序,便于打印阅览(此处不再说明,看代码即可)27 *28 * @warn注意点29 * 对于0~9的数字30 * 十六进制转换成十进制,相应于BCD码转换成十进制31 * 一个十六进制相当于一个byte,相当于两个[0,9]32 *33 * @see34 * 8583报文拆组包关键点:35 * 报文头各域、表问类型标识、位图或者报文体域所使用的编码方式,比如BCD编码还是普通的十六进制36 * 位图的使用37 * 报文体域的变长处理38 *39 * @see40 * 拆组包8583报文需要对于编码和解码、进制转换、字符集有一个充分和系统的了解41 */

42 public classParse8583 {43 static int currentIndex = 0;44 static Map map =Bean8583Factory.getInstance().getMap();45 public static void main(String[] args) throwsUnsupportedEncodingException {46 //获取8583报文

47 byte[] resp = FileTools.readContent("D:/workspace/springweb/src/com/handle8583/8583resp.txt"

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 8583解析是指在Android开发中,对8583进行解析的过程。8583是一种用于金融交易的通信协议,常用于ATM机、POS机等设备的通信。在Android开发中,我们可以使用一些开源的库或者自己编写代码来实现对8583解析。 在csdn中,我们可以找到一些相关的博客或者章,介绍如何在Android中解析8583。这些章通常会提供一些示例代码和详细的解释,帮助开发人员理解和掌握8583解析的过程。 一般来说,8583解析的过程包括以下几个步骤: 1. 接收:首先,我们需要获取到发送给Android设备的8583。这可以通过Socket连接、HTTP请求或者其他方式实现。 2. 解析:接下来,我们需要解析的各个字段。8583通常由多个域组成,每个域都有特定的含义和格式。我们可以使用Java的字符串处理方法,根据各个域的长度和数据类型,将分解成各个字段。 3. 字段解析:每个字段都有自己的说明和格式要求。在解析过程中,我们需要根据字段的定义,把中的数据按照规定的格式进行处理和转换。例如,日期字段可能需要转换成标准的日期格式,金额字段可能需要进行数值转换。 4. 结果返回:完成解析后,我们可以将解析得到的各个字段的值返回给调用方,供后续的业务逻辑处理。通常情况下,我们会将解析得到的数据封装成一个对象,方便程序的使用。 总结来说,Android 8583解析是一种将金融交易的通信按照规定的格式进行解析的过程。通过在csdn上查找相关章和学习相关的库,我们可以掌握这一技术,为开发金融应用提供支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值