byteCompactedCodewords[count] = code;\r
count++;\r
// Base 900\r
- value *= 900;\r
- value += code;\r
+ value = 900 * value + code;\r
} else {\r
- if ((code == TEXT_COMPACTION_MODE_LATCH) ||\r
- (code == BYTE_COMPACTION_MODE_LATCH) ||\r
- (code == NUMERIC_COMPACTION_MODE_LATCH) ||\r
- (code == BYTE_COMPACTION_MODE_LATCH_6) ||\r
- (code == BEGIN_MACRO_PDF417_CONTROL_BLOCK) ||\r
- (code == BEGIN_MACRO_PDF417_OPTIONAL_FIELD) ||\r
- (code == MACRO_PDF417_TERMINATOR)) {\r
+ if (code == TEXT_COMPACTION_MODE_LATCH ||\r
+ code == BYTE_COMPACTION_MODE_LATCH ||\r
+ code == NUMERIC_COMPACTION_MODE_LATCH ||\r
+ code == BYTE_COMPACTION_MODE_LATCH_6 ||\r
+ code == BEGIN_MACRO_PDF417_CONTROL_BLOCK ||\r
+ code == BEGIN_MACRO_PDF417_OPTIONAL_FIELD ||\r
+ code == MACRO_PDF417_TERMINATOR) {\r
+ codeIndex--;\r
+ end = true;\r
}\r
- codeIndex--;\r
- end = true;\r
}\r
if ((count % 5 == 0) && (count > 0)) {\r
// Decode every 5 codewords\r
int count = 0;\r
long value = 0;\r
boolean end = false;\r
- while ((codeIndex < codewords[0]) && !end) {\r
+ while (codeIndex < codewords[0] && !end) {\r
int code = codewords[codeIndex++];\r
if (code < TEXT_COMPACTION_MODE_LATCH) {\r
- count += 1;\r
+ count++;\r
// Base 900\r
- value *= 900;\r
- value += code;\r
+ value = 900 * value + code;\r
} else {\r
- if ((code == TEXT_COMPACTION_MODE_LATCH) ||\r
- (code == BYTE_COMPACTION_MODE_LATCH) ||\r
- (code == NUMERIC_COMPACTION_MODE_LATCH) ||\r
- (code == BYTE_COMPACTION_MODE_LATCH_6) ||\r
- (code == BEGIN_MACRO_PDF417_CONTROL_BLOCK) ||\r
- (code == BEGIN_MACRO_PDF417_OPTIONAL_FIELD) ||\r
- (code == MACRO_PDF417_TERMINATOR)) {\r
+ if (code == TEXT_COMPACTION_MODE_LATCH ||\r
+ code == BYTE_COMPACTION_MODE_LATCH ||\r
+ code == NUMERIC_COMPACTION_MODE_LATCH ||\r
+ code == BYTE_COMPACTION_MODE_LATCH_6 ||\r
+ code == BEGIN_MACRO_PDF417_CONTROL_BLOCK ||\r
+ code == BEGIN_MACRO_PDF417_OPTIONAL_FIELD ||\r
+ code == MACRO_PDF417_TERMINATOR) {\r
+ codeIndex--;\r
+ end = true;\r
}\r
- codeIndex--;\r
- end = true;\r
}\r
if ((count % 5 == 0) && (count > 0)) {\r
// Decode every 5 codewords\r
// Convert to Base 256\r
char[] decodedData = new char[6];\r
for (int j = 0; j < 6; ++j) {\r
- decodedData[5 - j] = (char) (value % 256);\r
+ decodedData[5 - j] = (char) (value & 0xFF);\r
value >>= 8;\r
}\r
result.append(decodedData);\r
\r
int[] numericCodewords = new int[MAX_NUMERIC_CODEWORDS];\r
\r
- while ((codeIndex < codewords.length) && !end) {\r
+ while (codeIndex < codewords[0] && !end) {\r
int code = codewords[codeIndex++];\r
+ if (codeIndex == codewords[0]) {\r
+ end = true;\r
+ }\r
if (code < TEXT_COMPACTION_MODE_LATCH) {\r
numericCodewords[count] = code;\r
count++;\r
} else {\r
- if ((code == TEXT_COMPACTION_MODE_LATCH) ||\r
- (code == BYTE_COMPACTION_MODE_LATCH) ||\r
- (code == BYTE_COMPACTION_MODE_LATCH_6) ||\r
- (code == BEGIN_MACRO_PDF417_CONTROL_BLOCK) ||\r
- (code == BEGIN_MACRO_PDF417_OPTIONAL_FIELD) ||\r
- (code == MACRO_PDF417_TERMINATOR)) {\r
+ if (code == TEXT_COMPACTION_MODE_LATCH ||\r
+ code == BYTE_COMPACTION_MODE_LATCH ||\r
+ code == BYTE_COMPACTION_MODE_LATCH_6 ||\r
+ code == BEGIN_MACRO_PDF417_CONTROL_BLOCK ||\r
+ code == BEGIN_MACRO_PDF417_OPTIONAL_FIELD ||\r
+ code == MACRO_PDF417_TERMINATOR) {\r
+ codeIndex--;\r
+ end = true; \r
}\r
- codeIndex--;\r
- end = true;\r
}\r
- if ((count % MAX_NUMERIC_CODEWORDS) == 0 ||\r
- code == NUMERIC_COMPACTION_MODE_LATCH) {\r
+ if (count % MAX_NUMERIC_CODEWORDS == 0 ||\r
+ code == NUMERIC_COMPACTION_MODE_LATCH ||\r
+ end) {\r
// Re-invoking Numeric Compaction mode (by using codeword 902\r
// while in Numeric Compaction mode) serves to terminate the\r
// current Numeric Compaction mode grouping as described in 5.4.4.2,\r