xiaoyao9184/hj-t212-parser

对于Data的Flag值解析是否有错误?

Closed this issue · 0 comments

测试代码如下:
public void test2() throws IOException, T212FormatException { T212Mapper mapper = new T212Mapper() .enableDefaultVerifyFeatures() .enableDefaultParserFeatures(); Data data = new Data(); data.setDataFlag(Arrays.asList(new DataFlag[]{DataFlag.D,DataFlag.A})); data.setQn(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date())); data.setMn("ABCDEFG"); data.setPw("123456"); data.setSt(ST._32.getCode()); data.setCn(CN._1012.getCode()); CpData cpData = new CpData(); cpData.setPolId("w01018"); data.setCp(cpData); cpData.setSystemTime(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())); String str = mapper.writeDataAsString(data); System.out.println(str); }

输出结果:##0108QN=20201222115733219;ST=32;CN=1012;PW=123456;MN=ABCDEFG;CP=&&SystemTime=20201222115733;PolId=w01018&&;Flag=03740

跟踪DataReverseConverter.convertDataFlag源码如下:
/** * 转换 数据段标记 * @param flag * @return */ private String convertDataFlag(List<DataFlag> flag){ int i = 0; if(flag == null){ return ""; } for (DataFlag dataFlag : flag) { i = dataFlag.getBit() & i; } return Integer.toString(i); }

从源码的逻辑看,i的初始值为0,所以不管flag的值为多少,之后&出来的结果永远都为0。此处是我理解错误还是有其他的什么问题呢?求解答!万分感谢!