int calculateChecksum() { int result = 0; for (final Field<?> field : fields.values()) { if (field.getField() != CheckSum.FIELD && !isGroupField(field.getField())) { result += field.getChecksum(); } } for (Entry<Integer, List<Group>> entry : groups.entrySet()) { final List<Group> groupList = entry.getValue(); if (!groupList.isEmpty()) { if(IS_STRING_EQUIVALENT) { String value = NumbersCache.get(entry.getKey()); for (int i = value.length(); i-- != 0;) result += value.charAt(i); value = NumbersCache.get(groupList.size()); for (int i = value.length(); i-- != 0;) result += value.charAt(i); result += '=' + 1; } else { final IntField groupField = new IntField(entry.getKey()); groupField.setValue(groupList.size()); result += groupField.getChecksum(); } for (int i = 0; i < groupList.size(); i++) { result += groupList.get(i).calculateChecksum(); } } } return result & 0xFF; }
int calculateChecksum() { int result = 0; for (final Field<?> field : fields.values()) { if (field.getField() != CheckSum.FIELD && !isGroupField(field.getField())) { result += field.getChecksum(); } } for (Entry<Integer, List<Group>> entry : groups.entrySet()) { final List<Group> groupList = entry.getValue(); if (!groupList.isEmpty()) { if(IS_STRING_EQUIVALENT) { String value = NumbersCache.get(entry.getKey()); for (int i = value.length(); i-- != 0;) result += value.charAt(i); value = NumbersCache.get(groupList.size()); for (int i = value.length(); i-- != 0;) result += value.charAt(i); result += '=' + 1; } else { final IntField groupField = new IntField(entry.getKey()); groupField.setValue(groupList.size()); result += groupField.getChecksum(); } for (int i = 0; i < groupList.size(); i++) { result += groupList.get(i).calculateChecksum(); } } } return result & 0xFF; }
int calculateChecksum() { int result = 0; for (final Field<?> field : fields.values()) { if (field.getField() != CheckSum.FIELD && !isGroupField(field.getField())) { result += field.getChecksum(); } } for (Entry<Integer, List<Group>> entry : groups.entrySet()) { final List<Group> groupList = entry.getValue(); if (!groupList.isEmpty()) { final IntField groupField = new IntField(entry.getKey()); groupField.setValue(groupList.size()); result += groupField.getChecksum(); for (final Group group : groupList) { result += group.calculateChecksum(); } } } return result & 0xFF; }