From 79470a297c990f246e2d091ef9e7e62ca10fa03f Mon Sep 17 00:00:00 2001 From: Arthur Britto Date: Sun, 29 Apr 2012 12:58:23 -0700 Subject: [PATCH] Add some hex routines to utils. --- src/utils.cpp | 5 +++++ src/utils.h | 24 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/src/utils.cpp b/src/utils.cpp index 9e65a3101..1c454d004 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -19,4 +19,9 @@ boost::posix_time::ptime ptFromSeconds(int iSeconds) : ptEpoch() + boost::posix_time::seconds(iSeconds); } +char charHex(int iDigit) +{ + return iDigit < 10 ? '0' + iDigit : 'A' - 10 + iDigit; +} + // vim:ts=4 diff --git a/src/utils.h b/src/utils.h index 8ec8ffff8..dc6ba8e87 100644 --- a/src/utils.h +++ b/src/utils.h @@ -22,6 +22,30 @@ std::string strJoin(Iterator first, Iterator last, std::string strSeperator) return ossValues.str(); } + +char charHex(int iDigit); + +template +void strHex(std::string& strDst, Iterator first, int iSize) +{ + strDst.resize(iSize*2); + + for (int i = 0; i < iSize; i++) { + unsigned char c = *first++; + + strDst[i*2] = charHex(c >> 4); + strDst[i*2+1] = charHex(c & 15); + } +} + +inline void strHex(std::string& strDst, const std::string& strSrc) { + strHex(strDst, strSrc.begin(), strSrc.size()); +} + +inline void strHex(std::string& strDst, const std::vector vchData) { + strHex(strDst, vchData.begin(), vchData.size()); +} + #endif // vim:ts=4