X-Git-Url: http://git.rot13.org/?p=zxing.git;a=blobdiff_plain;f=core%2Fsrc%2Fcom%2Fgoogle%2Fzxing%2Foned%2FCode39Reader.java;h=0bc66bf518cef8d3f2ca0c0756c91e57dc1950e6;hp=50c0ede58e5b1612db6017e82379a5d0617b8f61;hb=2d9efc5f0d19d70fb4f240f506bc23992ab3fde6;hpb=7a9d557c6d1dc1db0e9d256161f0a0eec1558632 diff --git a/core/src/com/google/zxing/oned/Code39Reader.java b/core/src/com/google/zxing/oned/Code39Reader.java index 50c0ede5..0bc66bf5 100644 --- a/core/src/com/google/zxing/oned/Code39Reader.java +++ b/core/src/com/google/zxing/oned/Code39Reader.java @@ -30,6 +30,7 @@ import java.util.Hashtable; *

Decodes Code 39 barcodes. This does not support "Full ASCII Code 39" yet.

* * @author Sean Owen + * @see Code93Reader */ public final class Code39Reader extends OneDReader { @@ -143,22 +144,24 @@ public final class Code39Reader extends OneDReader { for (int i = 0; i < max; i++) { total += ALPHABET_STRING.indexOf(result.charAt(i)); } - if (total % 43 != ALPHABET_STRING.indexOf(result.charAt(max))) { + if (result.charAt(max) != ALPHABET[total % 43]) { throw ChecksumException.getChecksumInstance(); } result.deleteCharAt(max); } - String resultString = result.toString(); - if (extendedMode) { - resultString = decodeExtended(resultString); - } - - if (resultString.length() == 0) { + if (result.length() == 0) { // Almost surely a false positive throw NotFoundException.getNotFoundInstance(); } + String resultString; + if (extendedMode) { + resultString = decodeExtended(result); + } else { + resultString = result.toString(); + } + float left = (float) (start[1] + start[0]) / 2.0f; float right = (float) (nextStart + lastStart) / 2.0f; return new Result( @@ -271,7 +274,7 @@ public final class Code39Reader extends OneDReader { throw NotFoundException.getNotFoundInstance(); } - private static String decodeExtended(String encoded) throws FormatException { + private static String decodeExtended(StringBuffer encoded) throws FormatException { int length = encoded.length(); StringBuffer decoded = new StringBuffer(length); for (int i = 0; i < length; i++) {