From 36f8e4f2adf6aaee01b715004e218ceb739d3160 Mon Sep 17 00:00:00 2001 From: Nik Bougalis Date: Mon, 1 Dec 2014 17:02:09 -0800 Subject: [PATCH] Improve hex conversion & parsing routines --- src/ripple/types/impl/strHex.cpp | 8 ++++---- src/ripple/types/strHex.h | 12 +++++++++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/ripple/types/impl/strHex.cpp b/src/ripple/types/impl/strHex.cpp index d0ceb1b2b..3e09fdb44 100644 --- a/src/ripple/types/impl/strHex.cpp +++ b/src/ripple/types/impl/strHex.cpp @@ -32,7 +32,7 @@ char charHex (int iDigit) return 0; } -int charUnHex (char cDigit) +int charUnHex (unsigned char c) { struct HexTab { @@ -49,15 +49,15 @@ int charUnHex (char cDigit) hex ['a'+i] = 10 + i; } } - int operator[] (int i) const + int operator[] (unsigned char c) const { - return hex[i]; + return hex[c]; } }; static HexTab xtab; - return xtab[cDigit]; + return xtab[c]; } } diff --git a/src/ripple/types/strHex.h b/src/ripple/types/strHex.h index 557be3c37..52c92237f 100644 --- a/src/ripple/types/strHex.h +++ b/src/ripple/types/strHex.h @@ -33,11 +33,21 @@ namespace ripple { */ char charHex (int iDigit); +/** @{ */ /** Converts a hex digit to the corresponding integer @param cDigit one of '0'-'9', 'A'-'F' or 'a'-'f' @return an integer from 0 to 15 on success; -1 on failure. */ -int charUnHex (char cDigit); +int +charUnHex (unsigned char c); + +inline +int +charUnHex (char c) +{ + return charUnHex (static_cast(c)); +} +/** @} */ // NIKB TODO cleanup this function and reduce the need for the many overloads // it has in various places.