大家都知道可以用8个字节或者16个字节表示64个域或者128个域,那么具体是怎么来的呢?在8583报文中,如果是64位,那么就用64个0表示所有的域,哪一个域有值,那么代表这个域的0换成1,比如0000005...那么代表的是64域中第7域有值;如果是128域,那么应该是128个0,第一个0变成1,代表64域后面有扩展域。即使是这样那么最后还是生成000101001..这样的二进制数据,那么这个时候就要把这些二进制转变成16进制了,比如8,二进制就是1000,这样每4个二进制代表一位16进制。同理128位图,除了把第一位变成1后面也是再相应的为变成1就可以了。具体可以参考https://jingyan.baidu.com/article/47a29f24292608c0142399cb.html。其实bitmap很简单就可以组出来
代码实现可以参考我下面这个:
package com.md.pay.util;
import java.util.ArrayList;
import java.util.List;
/**
* iso8583 位图生成与解析工具
*
* @author Lewis
*/
public class Iso8583Util {
/**
* 初始64和128域
*
* @param d
* @return
* @throws Exception
*/
public static String initBitMap(int d) throws Exception {