From 04500a4ce82cd2abb36d02850bb41628967b1c10 Mon Sep 17 00:00:00 2001 From: Kirill Zhdanovich Date: Sun, 14 Apr 2013 14:02:40 +0300 Subject: [PATCH] Refactor and remove useless code in FromHex(). --- coding/hex.cpp | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/coding/hex.cpp b/coding/hex.cpp index 6db94166de..7cec3b69fb 100644 --- a/coding/hex.cpp +++ b/coding/hex.cpp @@ -21,27 +21,26 @@ namespace impl { // static const char kFromHexTable[] = "0123456789ABCDEF"; + uint8_t HexDigitToRaw(uint8_t const digit) + { + if (digit >= '0' && digit <= '9') + return (digit - '0'); + else if (digit >= 'A' && digit <= 'F') + return (digit - 'A' + 10); + ASSERT(false, (digit)); + return 0; + } + void FromHexRaw(void const * src, size_t size, void * dst) { uint8_t const * ptr = static_cast(src); uint8_t const * end = ptr + size; uint8_t * out = static_cast(dst); - while (ptr < end) { - *out = 0; - if (*ptr >= '0' && *ptr <= '9') { - *out |= ((*ptr - '0') << 4); - } else if (*ptr >= 'A' && *ptr <= 'F') { - *out |= ((*ptr - 'A' + 10) << 4); - } - ++ptr; - - if (*ptr >= '0' && *ptr <= '9') { - *out |= ((*ptr - '0') & 0xF); - } else if (*ptr >= 'A' && *ptr <= 'F') { - *out |= ((*ptr - 'A' + 10) & 0xF); - } - ++ptr; + while (ptr < end) + { + *out = HexDigitToRaw(*ptr++) << 4; + *out |= HexDigitToRaw(*ptr++); ++out; } }