diff --git a/q931.c b/q931.c index 9676c1c..61bc403 100755 --- a/q931.c +++ b/q931.c @@ -1595,11 +1595,11 @@ static FUNC_DUMP(dump_generic_digits) switch(encoding) { case 0: /* BCD even */ case 1: /* BCD odd */ - pri_message("%d", (ie->data[idx-2] >> 4) & 0x0f); - value = value * 10 + ((ie->data[idx-2] >> 4) & 0x0f); + pri_message("%d", ie->data[idx-2] & 0x0f); + value = value * 10 + (ie->data[idx-2] & 0x0f); if(!encoding || (idx+1 < len)) { /* Special handling for BCD odd */ - pri_message("%d", ie->data[idx-2] & 0x0f); - value = value * 10 + (ie->data[idx-2] & 0x0f); + pri_message("%d", (ie->data[idx-2] >> 4) & 0x0f); + value = value * 10 + ((ie->data[idx-2] >> 4) & 0x0f); } break; case 2: /* IA5 */ @@ -1645,9 +1645,9 @@ static FUNC_RECV(receive_generic_digits) switch(encoding) { case 0: /* BCD even */ case 1: /* BCD odd */ - value = value * 10 + ((ie->data[idx-2] >> 4) & 0x0f); + value = value * 10 + (ie->data[idx-2] & 0x0f); if(!encoding || (idx+1 < len)) /* Special handling for BCD odd */ - value = value * 10 + (ie->data[idx-2] & 0x0f); + value = value * 10 + ((ie->data[idx-2] >> 4) & 0x0f); break; case 2: /* IA5 */ value = value * 10 + (ie->data[idx-2] - '0');