mirror of
https://github.com/zint/zint
synced 2024-11-16 20:57:25 +13:00
Simplify conversion to binary with common function
No change to functionality
This commit is contained in:
397
backend/rss.c
397
backend/rss.c
@ -1169,7 +1169,7 @@ int general_rules(char field[], char type[]) {
|
||||
|
||||
/* Handles all data encodation from section 7.2.5 of ISO/IEC 24724 */
|
||||
int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_string[]) {
|
||||
int encoding_method, i, mask, j, read_posn, latch, debug = symbol->debug, last_mode = ISOIEC;
|
||||
int encoding_method, i, j, read_posn, latch, debug = symbol->debug, last_mode = ISOIEC;
|
||||
int symbol_characters, characters_per_row;
|
||||
#ifndef _MSC_VER
|
||||
char general_field[strlen(source) + 1], general_field_type[strlen(source) + 1];
|
||||
@ -1177,11 +1177,10 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
||||
char* general_field = (char*) _alloca(strlen(source) + 1);
|
||||
char* general_field_type = (char*) _alloca(strlen(source) + 1);
|
||||
#endif
|
||||
int remainder, d1, d2, value;
|
||||
int remainder, d1, d2;
|
||||
char padstring[40];
|
||||
|
||||
read_posn = 0;
|
||||
value = 0;
|
||||
|
||||
/* Decide whether a compressed data field is required and if so what
|
||||
method to use - method 2 = no compressed data field */
|
||||
@ -1335,10 +1334,9 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
||||
case 2: strcat(binary_string, "00XX");
|
||||
read_posn = 0;
|
||||
break;
|
||||
case 3: strcat(binary_string, "0100");
|
||||
read_posn = strlen(source);
|
||||
break;
|
||||
case 4: strcat(binary_string, "0101");
|
||||
case 3: // 0100
|
||||
case 4: // 0101
|
||||
bin_append(4 + (encoding_method - 3), 4, binary_string);
|
||||
read_posn = strlen(source);
|
||||
break;
|
||||
case 5: strcat(binary_string, "01100XX");
|
||||
@ -1347,28 +1345,8 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
||||
case 6: strcat(binary_string, "01101XX");
|
||||
read_posn = 23;
|
||||
break;
|
||||
case 7: strcat(binary_string, "0111000");
|
||||
read_posn = strlen(source);
|
||||
break;
|
||||
case 8: strcat(binary_string, "0111001");
|
||||
read_posn = strlen(source);
|
||||
break;
|
||||
case 9: strcat(binary_string, "0111010");
|
||||
read_posn = strlen(source);
|
||||
break;
|
||||
case 10: strcat(binary_string, "0111011");
|
||||
read_posn = strlen(source);
|
||||
break;
|
||||
case 11: strcat(binary_string, "0111100");
|
||||
read_posn = strlen(source);
|
||||
break;
|
||||
case 12: strcat(binary_string, "0111101");
|
||||
read_posn = strlen(source);
|
||||
break;
|
||||
case 13: strcat(binary_string, "0111110");
|
||||
read_posn = strlen(source);
|
||||
break;
|
||||
case 14: strcat(binary_string, "0111111");
|
||||
default: /* modes 7 to 14 */
|
||||
bin_append(56 + (encoding_method - 7), 7, binary_string);
|
||||
read_posn = strlen(source);
|
||||
break;
|
||||
}
|
||||
@ -1395,73 +1373,28 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
||||
if (encoding_method == 1) {
|
||||
/* Encoding method field "1" - general item identification data */
|
||||
char group[4];
|
||||
int group_val;
|
||||
|
||||
group[0] = source[2];
|
||||
group[1] = '\0';
|
||||
group_val = atoi(group);
|
||||
|
||||
mask = 0x08;
|
||||
for (j = 0; j < 4; j++) {
|
||||
strcat(binary_string, (group_val & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
}
|
||||
bin_append(atoi(group), 4, binary_string);
|
||||
|
||||
for (i = 1; i < 5; i++) {
|
||||
group[0] = source[(i * 3)];
|
||||
group[1] = source[(i * 3) + 1];
|
||||
group[2] = source[(i * 3) + 2];
|
||||
group[3] = '\0';
|
||||
group_val = atoi(group);
|
||||
|
||||
mask = 0x200;
|
||||
for (j = 0; j < 10; j++) {
|
||||
strcat(binary_string, (group_val & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
}
|
||||
bin_append(atoi(group), 10, binary_string);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (encoding_method == 3) {
|
||||
if ((encoding_method == 3) || (encoding_method == 4)) {
|
||||
/* Encoding method field "0100" - variable weight item
|
||||
(0,001 kilogram icrements) */
|
||||
char group[4];
|
||||
int group_val;
|
||||
char weight_str[7];
|
||||
|
||||
for (i = 1; i < 5; i++) {
|
||||
group[0] = source[(i * 3)];
|
||||
group[1] = source[(i * 3) + 1];
|
||||
group[2] = source[(i * 3) + 2];
|
||||
group[3] = '\0';
|
||||
group_val = atoi(group);
|
||||
|
||||
mask = 0x200;
|
||||
for (j = 0; j < 10; j++) {
|
||||
strcat(binary_string, (group_val & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 6; i++) {
|
||||
weight_str[i] = source[20 + i];
|
||||
}
|
||||
weight_str[6] = '\0';
|
||||
group_val = atoi(weight_str);
|
||||
|
||||
mask = 0x4000;
|
||||
for (j = 0; j < 15; j++) {
|
||||
strcat(binary_string, (group_val & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (encoding_method == 4) {
|
||||
/* Encoding method field "0101" - variable weight item (0,01 or
|
||||
0,001 pound increment) */
|
||||
char group[4];
|
||||
int group_val;
|
||||
char weight_str[7];
|
||||
|
||||
for (i = 1; i < 5; i++) {
|
||||
@ -1469,32 +1402,51 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
||||
group[1] = source[(i * 3) + 1];
|
||||
group[2] = source[(i * 3) + 2];
|
||||
group[3] = '\0';
|
||||
group_val = atoi(group);
|
||||
|
||||
mask = 0x200;
|
||||
for (j = 0; j < 10; j++) {
|
||||
strcat(binary_string, (group_val & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
}
|
||||
bin_append(atoi(group), 10, binary_string);
|
||||
}
|
||||
|
||||
for (i = 0; i < 6; i++) {
|
||||
weight_str[i] = source[20 + i];
|
||||
}
|
||||
weight_str[6] = '\0';
|
||||
group_val = atoi(weight_str);
|
||||
|
||||
if (source[19] == '3') {
|
||||
group_val = group_val + 10000;
|
||||
}
|
||||
|
||||
mask = 0x4000;
|
||||
for (j = 0; j < 15; j++) {
|
||||
strcat(binary_string, (group_val & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
if ((encoding_method == 4) && (source[19] == '3')) {
|
||||
bin_append(atoi(weight_str) + 10000, 15, binary_string);
|
||||
} else {
|
||||
bin_append(atoi(weight_str), 15, binary_string);
|
||||
}
|
||||
}
|
||||
|
||||
if ((encoding_method == 5) || (encoding_method == 6)) {
|
||||
/* Encoding method "01100" - variable measure item and price */
|
||||
/* Encoding method "01101" - variable measure item and price with ISO 4217
|
||||
Currency Code */
|
||||
|
||||
char group[4];
|
||||
|
||||
for (i = 1; i < 5; i++) {
|
||||
group[0] = source[(i * 3)];
|
||||
group[1] = source[(i * 3) + 1];
|
||||
group[2] = source[(i * 3) + 2];
|
||||
group[3] = '\0';
|
||||
|
||||
bin_append(atoi(group), 10, binary_string);
|
||||
}
|
||||
|
||||
bin_append(source[19] - '0', 2, binary_string);
|
||||
|
||||
if (encoding_method == 6) {
|
||||
char currency_str[5];
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
currency_str[i] = source[20 + i];
|
||||
}
|
||||
currency_str[3] = '\0';
|
||||
|
||||
bin_append(atoi(currency_str), 10, binary_string);
|
||||
}
|
||||
}
|
||||
|
||||
if ((encoding_method >= 7) && (encoding_method <= 14)) {
|
||||
/* Encoding method fields "0111000" through "0111111" - variable
|
||||
@ -1509,13 +1461,8 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
||||
group[1] = source[(i * 3) + 1];
|
||||
group[2] = source[(i * 3) + 2];
|
||||
group[3] = '\0';
|
||||
group_val = atoi(group);
|
||||
|
||||
mask = 0x200;
|
||||
for (j = 0; j < 10; j++) {
|
||||
strcat(binary_string, (group_val & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
}
|
||||
|
||||
bin_append(atoi(group), 10, binary_string);
|
||||
}
|
||||
|
||||
weight_str[0] = source[19];
|
||||
@ -1524,13 +1471,8 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
||||
weight_str[i + 1] = source[21 + i];
|
||||
}
|
||||
weight_str[6] = '\0';
|
||||
group_val = atoi(weight_str);
|
||||
|
||||
mask = 0x80000;
|
||||
for (j = 0; j < 20; j++) {
|
||||
strcat(binary_string, (group_val & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
}
|
||||
|
||||
bin_append(atoi(weight_str), 20, binary_string);
|
||||
|
||||
if (strlen(source) == 34) {
|
||||
/* Date information is included */
|
||||
@ -1550,88 +1492,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
||||
group_val = 38400;
|
||||
}
|
||||
|
||||
mask = 0x8000;
|
||||
for (j = 0; j < 16; j++) {
|
||||
strcat(binary_string, (group_val & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (encoding_method == 5) {
|
||||
/* Encoding method field "01100" - variable measure item and price */
|
||||
char group[4];
|
||||
int group_val;
|
||||
|
||||
for (i = 1; i < 5; i++) {
|
||||
group[0] = source[(i * 3)];
|
||||
group[1] = source[(i * 3) + 1];
|
||||
group[2] = source[(i * 3) + 2];
|
||||
group[3] = '\0';
|
||||
group_val = atoi(group);
|
||||
|
||||
mask = 0x200;
|
||||
for (j = 0; j < 10; j++) {
|
||||
strcat(binary_string, (group_val & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
}
|
||||
}
|
||||
|
||||
switch (source[19]) {
|
||||
case '0': strcat(binary_string, "00");
|
||||
break;
|
||||
case '1': strcat(binary_string, "01");
|
||||
break;
|
||||
case '2': strcat(binary_string, "10");
|
||||
break;
|
||||
case '3': strcat(binary_string, "11");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (encoding_method == 6) {
|
||||
/* Encoding method "01101" - variable measure item and price with ISO 4217
|
||||
Currency Code */
|
||||
|
||||
char group[4];
|
||||
int group_val;
|
||||
char currency_str[5];
|
||||
|
||||
for (i = 1; i < 5; i++) {
|
||||
group[0] = source[(i * 3)];
|
||||
group[1] = source[(i * 3) + 1];
|
||||
group[2] = source[(i * 3) + 2];
|
||||
group[3] = '\0';
|
||||
group_val = atoi(group);
|
||||
|
||||
mask = 0x200;
|
||||
for (j = 0; j < 10; j++) {
|
||||
strcat(binary_string, (group_val & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
}
|
||||
}
|
||||
|
||||
switch (source[19]) {
|
||||
case '0': strcat(binary_string, "00");
|
||||
break;
|
||||
case '1': strcat(binary_string, "01");
|
||||
break;
|
||||
case '2': strcat(binary_string, "10");
|
||||
break;
|
||||
case '3': strcat(binary_string, "11");
|
||||
break;
|
||||
}
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
currency_str[i] = source[20 + i];
|
||||
}
|
||||
currency_str[3] = '\0';
|
||||
group_val = atoi(currency_str);
|
||||
|
||||
mask = 0x200;
|
||||
for (j = 0; j < 10; j++) {
|
||||
strcat(binary_string, (group_val & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
}
|
||||
bin_append(group_val, 16, binary_string);
|
||||
}
|
||||
|
||||
/* The compressed data field has been processed if appropriate - the
|
||||
@ -1738,12 +1599,12 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
||||
|
||||
/* Set initial mode if not NUMERIC */
|
||||
if (general_field_type[0] == ALPHA) {
|
||||
strcat(binary_string, "0000"); /* Alphanumeric latch */
|
||||
bin_append(0, 4, binary_string); /* Alphanumeric latch */
|
||||
last_mode = ALPHA;
|
||||
}
|
||||
if (general_field_type[0] == ISOIEC) {
|
||||
strcat(binary_string, "0000"); /* Alphanumeric latch */
|
||||
strcat(binary_string, "00100"); /* ISO/IEC 646 latch */
|
||||
bin_append(0, 4, binary_string); /* Alphanumeric latch */
|
||||
bin_append(4, 5, binary_string); /* ISO/IEC 646 latch */
|
||||
last_mode = ISOIEC;
|
||||
}
|
||||
|
||||
@ -1755,7 +1616,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
||||
if (debug) printf("as NUMERIC:");
|
||||
|
||||
if (last_mode != NUMERIC) {
|
||||
strcat(binary_string, "000"); /* Numeric latch */
|
||||
bin_append(0, 3, binary_string); /* Numeric latch */
|
||||
if (debug) printf("<NUMERIC LATCH>\n");
|
||||
}
|
||||
|
||||
@ -1772,16 +1633,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
||||
d2 = 10;
|
||||
}
|
||||
|
||||
value = (11 * d1) + d2 + 8;
|
||||
|
||||
mask = 0x40;
|
||||
for (j = 0; j < 7; j++) {
|
||||
strcat(binary_string, (value & mask) ? "1" : "0");
|
||||
if (debug) {
|
||||
printf("%d", !!(value & mask));
|
||||
}
|
||||
mask = mask >> 1;
|
||||
}
|
||||
bin_append((11 * d1) + d2 + 8, 7, binary_string);
|
||||
|
||||
i += 2;
|
||||
if (debug) printf("\n");
|
||||
@ -1792,45 +1644,33 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
||||
if (debug) printf("as ALPHA\n");
|
||||
if (i != 0) {
|
||||
if (last_mode == NUMERIC) {
|
||||
strcat(binary_string, "0000"); /* Alphanumeric latch */
|
||||
bin_append(0, 4, binary_string); /* Alphanumeric latch */
|
||||
}
|
||||
if (last_mode == ISOIEC) {
|
||||
strcat(binary_string, "00100"); /* Alphanumeric latch */
|
||||
bin_append(4, 5, binary_string); /* Alphanumeric latch */
|
||||
}
|
||||
}
|
||||
|
||||
if ((general_field[i] >= '0') && (general_field[i] <= '9')) {
|
||||
|
||||
value = general_field[i] - 43;
|
||||
|
||||
mask = 0x10;
|
||||
for (j = 0; j < 5; j++) {
|
||||
strcat(binary_string, (value & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
}
|
||||
bin_append(general_field[i] - 43, 5, binary_string);
|
||||
}
|
||||
|
||||
if ((general_field[i] >= 'A') && (general_field[i] <= 'Z')) {
|
||||
|
||||
value = general_field[i] - 33;
|
||||
|
||||
mask = 0x20;
|
||||
for (j = 0; j < 6; j++) {
|
||||
strcat(binary_string, (value & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
}
|
||||
bin_append(general_field[i] - 33, 6, binary_string);
|
||||
}
|
||||
|
||||
last_mode = ALPHA;
|
||||
|
||||
if (general_field[i] == '[') {
|
||||
strcat(binary_string, "01111");
|
||||
bin_append(15, 5, binary_string);
|
||||
last_mode = NUMERIC;
|
||||
} /* FNC1/Numeric latch */
|
||||
if (general_field[i] == '*') strcat(binary_string, "111010"); /* asterisk */
|
||||
if (general_field[i] == ',') strcat(binary_string, "111011"); /* comma */
|
||||
if (general_field[i] == '-') strcat(binary_string, "111100"); /* minus or hyphen */
|
||||
if (general_field[i] == '.') strcat(binary_string, "111101"); /* period or full stop */
|
||||
if (general_field[i] == '/') strcat(binary_string, "111110"); /* slash or solidus */
|
||||
|
||||
if (general_field[i] == '*') bin_append(58, 6, binary_string); /* asterisk */
|
||||
if (general_field[i] == ',') bin_append(59, 6, binary_string); /* comma */
|
||||
if (general_field[i] == '-') bin_append(60, 6, binary_string); /* minus or hyphen */
|
||||
if (general_field[i] == '.') bin_append(61, 6, binary_string); /* period or full stop */
|
||||
if (general_field[i] == '/') bin_append(62, 6, binary_string); /* slash or solidus */
|
||||
|
||||
i++;
|
||||
break;
|
||||
@ -1839,73 +1679,53 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
||||
if (debug) printf("as ISOIEC\n");
|
||||
if (i != 0) {
|
||||
if (last_mode == NUMERIC) {
|
||||
strcat(binary_string, "0000"); /* Alphanumeric latch */
|
||||
strcat(binary_string, "00100"); /* ISO/IEC 646 latch */
|
||||
bin_append(0, 4, binary_string); /* Alphanumeric latch */
|
||||
bin_append(4, 5, binary_string); /* ISO/IEC 646 latch */
|
||||
}
|
||||
if (last_mode == ALPHA) {
|
||||
strcat(binary_string, "00100"); /* ISO/IEC 646 latch */
|
||||
bin_append(4, 5, binary_string); /* ISO/IEC 646 latch */
|
||||
}
|
||||
}
|
||||
|
||||
if ((general_field[i] >= '0') && (general_field[i] <= '9')) {
|
||||
|
||||
value = general_field[i] - 43;
|
||||
|
||||
mask = 0x10;
|
||||
for (j = 0; j < 5; j++) {
|
||||
strcat(binary_string, (value & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
}
|
||||
bin_append(general_field[i] - 43, 5, binary_string);
|
||||
}
|
||||
|
||||
if ((general_field[i] >= 'A') && (general_field[i] <= 'Z')) {
|
||||
|
||||
value = general_field[i] - 1;
|
||||
|
||||
mask = 0x40;
|
||||
for (j = 0; j < 7; j++) {
|
||||
strcat(binary_string, (value & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
}
|
||||
bin_append(general_field[i] - 1, 7, binary_string);
|
||||
}
|
||||
|
||||
if ((general_field[i] >= 'a') && (general_field[i] <= 'z')) {
|
||||
|
||||
value = general_field[i] - 7;
|
||||
|
||||
mask = 0x40;
|
||||
for (j = 0; j < 7; j++) {
|
||||
strcat(binary_string, (value & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
}
|
||||
bin_append(general_field[i] - 7, 7, binary_string);
|
||||
}
|
||||
|
||||
last_mode = ISOIEC;
|
||||
|
||||
if (general_field[i] == '[') {
|
||||
strcat(binary_string, "01111");
|
||||
bin_append(15, 5, binary_string);
|
||||
last_mode = NUMERIC;
|
||||
} /* FNC1/Numeric latch */
|
||||
if (general_field[i] == '!') strcat(binary_string, "11101000"); /* exclamation mark */
|
||||
if (general_field[i] == 34) strcat(binary_string, "11101001"); /* quotation mark */
|
||||
if (general_field[i] == 37) strcat(binary_string, "11101010"); /* percent sign */
|
||||
if (general_field[i] == '&') strcat(binary_string, "11101011"); /* ampersand */
|
||||
if (general_field[i] == 39) strcat(binary_string, "11101100"); /* apostrophe */
|
||||
if (general_field[i] == '(') strcat(binary_string, "11101101"); /* left parenthesis */
|
||||
if (general_field[i] == ')') strcat(binary_string, "11101110"); /* right parenthesis */
|
||||
if (general_field[i] == '*') strcat(binary_string, "11101111"); /* asterisk */
|
||||
if (general_field[i] == '+') strcat(binary_string, "11110000"); /* plus sign */
|
||||
if (general_field[i] == ',') strcat(binary_string, "11110001"); /* comma */
|
||||
if (general_field[i] == '-') strcat(binary_string, "11110010"); /* minus or hyphen */
|
||||
if (general_field[i] == '.') strcat(binary_string, "11110011"); /* period or full stop */
|
||||
if (general_field[i] == '/') strcat(binary_string, "11110100"); /* slash or solidus */
|
||||
if (general_field[i] == ':') strcat(binary_string, "11110101"); /* colon */
|
||||
if (general_field[i] == ';') strcat(binary_string, "11110110"); /* semicolon */
|
||||
if (general_field[i] == '<') strcat(binary_string, "11110111"); /* less-than sign */
|
||||
if (general_field[i] == '=') strcat(binary_string, "11111000"); /* equals sign */
|
||||
if (general_field[i] == '>') strcat(binary_string, "11111001"); /* greater-than sign */
|
||||
if (general_field[i] == '?') strcat(binary_string, "11111010"); /* question mark */
|
||||
if (general_field[i] == '_') strcat(binary_string, "11111011"); /* underline or low line */
|
||||
if (general_field[i] == ' ') strcat(binary_string, "11111100"); /* space */
|
||||
|
||||
if (general_field[i] == '!') bin_append(232, 8, binary_string); /* exclamation mark */
|
||||
if (general_field[i] == 34) bin_append(233, 8, binary_string); /* quotation mark */
|
||||
if (general_field[i] == 37) bin_append(234, 8, binary_string); /* percent sign */
|
||||
if (general_field[i] == '&') bin_append(235, 8, binary_string); /* ampersand */
|
||||
if (general_field[i] == 39) bin_append(236, 8, binary_string); /* apostrophe */
|
||||
if (general_field[i] == '(') bin_append(237, 8, binary_string); /* left parenthesis */
|
||||
if (general_field[i] == ')') bin_append(238, 8, binary_string); /* right parenthesis */
|
||||
if (general_field[i] == '*') bin_append(239, 8, binary_string); /* asterisk */
|
||||
if (general_field[i] == '+') bin_append(240, 8, binary_string); /* plus sign */
|
||||
if (general_field[i] == ',') bin_append(241, 8, binary_string); /* comma */
|
||||
if (general_field[i] == '-') bin_append(242, 8, binary_string); /* minus or hyphen */
|
||||
if (general_field[i] == '.') bin_append(243, 8, binary_string); /* period or full stop */
|
||||
if (general_field[i] == '/') bin_append(244, 8, binary_string); /* slash or solidus */
|
||||
if (general_field[i] == ':') bin_append(245, 8, binary_string); /* colon */
|
||||
if (general_field[i] == ';') bin_append(246, 8, binary_string); /* semicolon */
|
||||
if (general_field[i] == '<') bin_append(247, 8, binary_string); /* less-than sign */
|
||||
if (general_field[i] == '=') bin_append(248, 8, binary_string); /* equals sign */
|
||||
if (general_field[i] == '>') bin_append(249, 8, binary_string); /* greater-than sign */
|
||||
if (general_field[i] == '?') bin_append(250, 8, binary_string); /* question mark */
|
||||
if (general_field[i] == '_') bin_append(251, 8, binary_string); /* underline or low line */
|
||||
if (general_field[i] == ' ') bin_append(252, 8, binary_string); /* space */
|
||||
|
||||
i++;
|
||||
break;
|
||||
@ -1948,34 +1768,15 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
||||
|
||||
if (last_mode == NUMERIC) {
|
||||
if ((remainder >= 4) && (remainder <= 6)) {
|
||||
value = ctoi(general_field[i]);
|
||||
value++;
|
||||
|
||||
mask = 0x08;
|
||||
for (j = 0; j < 4; j++) {
|
||||
strcat(binary_string, (value & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
}
|
||||
bin_append(ctoi(general_field[i]) + 1, 4, binary_string);
|
||||
} else {
|
||||
d1 = ctoi(general_field[i]);
|
||||
d2 = 10;
|
||||
|
||||
value = (11 * d1) + d2 + 8;
|
||||
|
||||
mask = 0x40;
|
||||
for (j = 0; j < 7; j++) {
|
||||
strcat(binary_string, (value & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
}
|
||||
bin_append((11 * d1) + d2 + 8, 7, binary_string);
|
||||
}
|
||||
} else {
|
||||
value = general_field[i] - 43;
|
||||
|
||||
mask = 0x10;
|
||||
for (j = 0; j < 5; j++) {
|
||||
strcat(binary_string, (value & mask) ? "1" : "0");
|
||||
mask = mask >> 1;
|
||||
}
|
||||
bin_append(general_field[i] - 43, 5, binary_string);
|
||||
}
|
||||
|
||||
remainder = 12 - (strlen(binary_string) % 12);
|
||||
|
Reference in New Issue
Block a user