From a0c8413171323c2d5efdfc19b50e1d9eeb4d67cb Mon Sep 17 00:00:00 2001 From: Enrique Zamudio Date: Fri, 20 Nov 2015 01:00:13 -0600 Subject: [PATCH] fix #61 thanks @alekssd --- src/main/java/com/solab/iso8583/util/Bcd.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/solab/iso8583/util/Bcd.java b/src/main/java/com/solab/iso8583/util/Bcd.java index 2861ec6..b0103cc 100644 --- a/src/main/java/com/solab/iso8583/util/Bcd.java +++ b/src/main/java/com/solab/iso8583/util/Bcd.java @@ -79,7 +79,12 @@ public final class Bcd { throws IndexOutOfBoundsException { char[] digits = new char[length]; int start = 0; - for (int i = pos; i < pos + (length / 2) + (length % 2); i++) { + int i = pos; + if (length % 2 != 0) { + digits[start++] = (char)((buf[i] & 0x0f) + 48); + i++; + } + for (;i < pos + (length / 2) + (length % 2); i++) { digits[start++] = (char)(((buf[i] & 0xf0) >> 4) + 48); digits[start++] = (char)((buf[i] & 0x0f) + 48); }