diff options
Diffstat (limited to 'libdevcore/CommonData.cpp')
-rw-r--r-- | libdevcore/CommonData.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/libdevcore/CommonData.cpp b/libdevcore/CommonData.cpp index 8d2639c9..1b0e9720 100644 --- a/libdevcore/CommonData.cpp +++ b/libdevcore/CommonData.cpp @@ -29,6 +29,28 @@ using namespace std; using namespace dev; +string dev::toHex(bytes const& _data, HexPrefix _prefix, HexCase _case) +{ + std::ostringstream ret; + if (_prefix == HexPrefix::Add) + ret << "0x"; + + int rix = _data.size() - 1; + for (uint8_t c: _data) + { + // switch hex case every four hexchars + auto hexcase = std::nouppercase; + if (_case == HexCase::Upper) + hexcase = std::uppercase; + else if (_case == HexCase::Mixed) + hexcase = (rix-- & 2) == 0 ? std::nouppercase : std::uppercase; + + ret << std::hex << hexcase << std::setfill('0') << std::setw(2) << size_t(c); + } + + return ret.str(); +} + int dev::fromHex(char _i, WhenError _throw) { if (_i >= '0' && _i <= '9') |