| 189 | } |
| 190 | |
| 191 | void L3BCDDigits::parse(const L3Frame& src, size_t &rp, size_t numOctets, bool international) |
| 192 | { |
| 193 | unsigned i=0; |
| 194 | size_t readOctets = 0; |
| 195 | if (international) mDigits[i++] = '+'; |
| 196 | while (readOctets < numOctets) { |
| 197 | unsigned d2 = src.readField(rp,4); |
| 198 | unsigned d1 = src.readField(rp,4); |
| 199 | readOctets++; |
| 200 | mDigits[i++] = d1 == 10 ? '*' : d1 == 11 ? '#' : d1+'0'; |
| 201 | if (d2!=0x0f) mDigits[i++] = d2 == 10 ? '*' : d2 == 11 ? '#' : d2+'0'; |
| 202 | if (i>maxDigits) L3_READ_ERROR; |
| 203 | } |
| 204 | mDigits[i++]='\0'; |
| 205 | } |
| 206 | |
| 207 | |
| 208 | static int encode(char c, bool *invalid) |