We want to connect the people who have knowledge to the people who need it, to bring together people with different perspectives so they can understand each other better, and to empower everyone to share their knowledge.
JAVA
package com.thiendz.test; import java.util.HashMap; import java.util.Map; public class VietQRDecoder { private static final String PREFIX = "000201010212"; private static final String SUFFIX = "6304"; private static final String PART_11_PREFIX = "0010A00000072701"; private static final String PART_2_PREFIX = "5303704"; private static final String AMOUNT_HEADER = "54"; private static final String PART_21_PREFIX = "5802VN62"; private static final int CHECK_SUM_LENGTH = 4; public static void main(String[] args) { Map<String, String> information = new HashMap<>(); // String input = "00020101021238540010A00000072701240006970436011010137721710208QRIBFTTA530370454061000005802VN62090805Hello63049F12"; // String input = "00020101021238560010A0000007270126000697100501121133666688880208QRIBFTTA53037045802VN6304AAAB"; // String input = "00020101021238580010A000000727012800069704070114190375154450150208QRIBFTTA53037045802VN62120808BTEST001630478FB"; // String input = "00020101021238580010A000000727012800069704070114190375154450150208QRIBFTTA53037045802VN62120808BTEST00263049629"; String input = "00020101021238580010A000000727012800069704150114190375154450150208QRIBFTTA5303704540410005802VN6304DDD5"; String parts = input.substring( PREFIX.length(), input.length() - SUFFIX.length() - CHECK_SUM_LENGTH ); parts = parts.substring(2); int part1Length = Integer.parseInt(parts.substring(0, 2)); parts = parts.substring(2); String part1 = parts.substring(0, part1Length); part1 = part1.substring(PART_11_PREFIX.length()); int part12Length = Integer.parseInt(part1.substring(0, 2)); part1 = part1.substring(2); String part12 = part1.substring(0, part12Length); part12 = part12.substring(2); int bankIdLength = Integer.parseInt(part12.substring(0, 2)); part12 = part12.substring(2); String bankId = part12.substring(0, bankIdLength); information.put("bankId", bankId); part12 = part12.substring(bankIdLength); part12 = part12.substring(2); int bankAccountLength = Integer.parseInt(part12.substring(0, 2)); part12 = part12.substring(2); String bankAccount = part12.substring(0, bankAccountLength); information.put("bankAccount", bankAccount); parts = parts.substring(part1Length); String part2 = parts.substring(PART_2_PREFIX.length()); information.put("amount", "0"); if (part2.startsWith(AMOUNT_HEADER)) { part2 = part2.substring(2); int amountLength = Integer.parseInt(part2.substring(0, 2)); part2 = part2.substring(2); String amount = part2.substring(0, amountLength); information.put("amount", amount); part2 = part2.substring(amountLength); } information.put("message", ""); if (part2.length() - PART_21_PREFIX.length() > PART_21_PREFIX.length()) { part2 = part2.substring(PART_21_PREFIX.length()); int part21Length = Integer.parseInt(part2.substring(0, 2)); part2 = part2.substring(2); String part21 = part2.substring(0, part21Length); part21 = part21.substring(2); int messageLength = Integer.parseInt(part21.substring(0, 2)); part21 = part21.substring(2); String message = part21.substring(0, messageLength); information.put("message", message); } System.out.println(information); } }
Js
class Qr { static PREFIX = '000201010212'; static SUFFIX = '6304'; static PART_11_PREFIX = '0010A00000072701'; static PART_2_PREFIX = '5303704'; static AMOUNT_HEADER = '54'; static PART_21_PREFIX = '5802VN62'; static CHECK_SUM_LENGTH = 4; static decoder(input) { let parts = input.substring( Qr.PREFIX.length, input.length - Qr.SUFFIX.length - Qr.CHECK_SUM_LENGTH ); parts = parts.substring(2); let part1Length = parseInt(parts.substring(0, 2)); parts = parts.substring(2); let part1 = parts.substring(0, part1Length); part1 = part1.substring(Qr.PART_11_PREFIX.length); let part12Length = parseInt(part1.substring(0, 2)); part1 = part1.substring(2); let part12 = part1.substring(0, part12Length); part12 = part12.substring(2); let bankIdLength = parseInt(part12.substring(0, 2)); part12 = part12.substring(2); let bankId = part12.substring(0, bankIdLength); part12 = part12.substring(bankIdLength); part12 = part12.substring(2); let bankAccountLength = parseInt(part12.substring(0, 2)); part12 = part12.substring(2); let bankAccount = part12.substring(0, bankAccountLength); let amount = 0; parts = parts.substring(part1Length); let part2 = parts.substring(Qr.PART_2_PREFIX.length); console.log(part2) if (part2.startsWith(Qr.AMOUNT_HEADER)) { part2 = part2.substring(2); let amountLength = parseInt(part2.substring(0, 2)); part2 = part2.substring(2); amount = part2.substring(0, amountLength); part2 = part2.substring(amountLength); } let message = ''; if (part2.length - Qr.PART_21_PREFIX.length > Qr.PART_21_PREFIX.length) { part2 = part2.substring(Qr.PART_21_PREFIX.length); let part21Length = parseInt(part2.substring(0, 2)); part2 = part2.substring(2); let part21 = part2.substring(0, part21Length); part21 = part21.substring(2); let messageLength = parseInt(part21.substring(0, 2)); part21 = part21.substring(2); message = part21.substring(0, messageLength); } return { bankId, bankAccount, amount, message }; } } console.log(Qr.decoder('00020101021238580010A000000727012800069704150114190375154450150208QRIBFTTA5303704540410005802VN6304DDD5'))
public class VietQRDecoder { private static final String PREFIX = "000201010212"; private static final String SUFFIX = "6304"; private static final String PART_11_PREFIX = "0010A00000072701"; private static final String PART_2_PREFIX = "530370454"; private static final String PART_21_PREFIX = "5802VN62"; private static final int CHECK_SUM_LENGTH = 4; public static void main(String[] args) { Map<String, String> information = new HashMap<>(); String input = "00020101021238540010A00000072701240006970436011010137721710208QRIBFTTA530370454061000005802VN62090805Hello63049F12"; String parts = input.substring( PREFIX.length(), input.length() - SUFFIX.length() - CHECK_SUM_LENGTH ); parts = parts.substring(2); int part1Length = Integer.parseInt(parts.substring(0, 2)); parts = parts.substring(2); String part1 = parts.substring(0, part1Length); part1 = part1.substring(PART_11_PREFIX.length()); int part12Length = Integer.parseInt(part1.substring(0, 2)); part1 = part1.substring(2); String part12 = part1.substring(0, part12Length); part12 = part12.substring(2); int bankIdLength = Integer.parseInt(part12.substring(0, 2)); part12 = part12.substring(2); String bankId = part12.substring(0, bankIdLength); information.put("bankId", bankId); part12 = part12.substring(bankIdLength); part12 = part12.substring(2); int bankAccountLength = Integer.parseInt(part12.substring(0, 2)); part12 = part12.substring(2); String bankAccount = part12.substring(0, bankAccountLength); information.put("bankAccount", bankAccount); parts = parts.substring(part1Length); String part2 = parts.substring(PART_2_PREFIX.length()); int amountLength = Integer.parseInt(part2.substring(0, 2)); part2 = part2.substring(2); String amount = part2.substring(0, amountLength); information.put("amount", amount); part2 = part2.substring(amountLength); part2 = part2.substring(PART_21_PREFIX.length()); int part21Length = Integer.parseInt(part2.substring(0, 2)); part2 = part2.substring(2); String part21 = part2.substring(0, part21Length); part21 = part21.substring(2); int messageLength = Integer.parseInt(part21.substring(0, 2)); part21 = part21.substring(2); String message = part21.substring(0, messageLength); information.put("message", message); System.out.println(information); } }
java.lang.NumberFormatException: For input string: "BT"
00020101021238580010A000000727012800069704070114190375154450150208QRIBFTTA53037045802VN62120808BTEST001630478FB
public class VietQRDecoderV2 { private static final String PREFIX = "000201010212"; private static final String SUFFIX = "6304"; private static final String PART_11_PREFIX = "0010A00000072701"; private static final String PART_2_PREFIX = "5303704"; private static final String AMOUNT_HEADER = "54"; private static final String PART_21_PREFIX = "5802VN62"; private static final int CHECK_SUM_LENGTH = 4; public static void main(String[] args) { Map<String, String> information = new HashMap<>(); String input = "00020101021238580010A000000727012800069704070114190375154450150208QRIBFTTA53037045802VN62120808BTEST001630478FB"; String parts = input.substring( PREFIX.length(), input.length() - SUFFIX.length() - CHECK_SUM_LENGTH ); parts = parts.substring(2); int part1Length = Integer.parseInt(parts.substring(0, 2)); parts = parts.substring(2); String part1 = parts.substring(0, part1Length); part1 = part1.substring(PART_11_PREFIX.length()); int part12Length = Integer.parseInt(part1.substring(0, 2)); part1 = part1.substring(2); String part12 = part1.substring(0, part12Length); part12 = part12.substring(2); int bankIdLength = Integer.parseInt(part12.substring(0, 2)); part12 = part12.substring(2); String bankId = part12.substring(0, bankIdLength); information.put("bankId", bankId); part12 = part12.substring(bankIdLength); part12 = part12.substring(2); int bankAccountLength = Integer.parseInt(part12.substring(0, 2)); part12 = part12.substring(2); String bankAccount = part12.substring(0, bankAccountLength); information.put("bankAccount", bankAccount); parts = parts.substring(part1Length); String part2 = parts.substring(PART_2_PREFIX.length()); if (part2.startsWith(AMOUNT_HEADER)) { part2 = part2.substring(2); int amountLength = Integer.parseInt(part2.substring(0, 2)); part2 = part2.substring(2); String amount = part2.substring(0, amountLength); information.put("amount", amount); part2 = part2.substring(amountLength); } part2 = part2.substring(PART_21_PREFIX.length()); int part21Length = Integer.parseInt(part2.substring(0, 2)); part2 = part2.substring(2); String part21 = part2.substring(0, part21Length); part21 = part21.substring(2); int messageLength = Integer.parseInt(part21.substring(0, 2)); part21 = part21.substring(2); String message = part21.substring(0, messageLength); information.put("message", message); System.out.println(information); } }
2.2K Point(s)
1.2K Point(s)
313 Point(s)
178 Point(s)
138 Point(s)
Input your email to receive reset password link, or if you remember your password, you can click