diff options
author | chriseth <chris@ethereum.org> | 2018-12-06 03:35:45 +0800 |
---|---|---|
committer | chriseth <chris@ethereum.org> | 2018-12-06 05:37:05 +0800 |
commit | e8455c2a6d33abbebfe678fdaa1728311838e21a (patch) | |
tree | 93b4d89200f468189920f69ee218a5dbd59e1cfb /libdevcore | |
parent | 3a378eae1a57683d0f31ab54c122b2a5c6a7c8bb (diff) | |
download | dexon-solidity-e8455c2a6d33abbebfe678fdaa1728311838e21a.tar dexon-solidity-e8455c2a6d33abbebfe678fdaa1728311838e21a.tar.gz dexon-solidity-e8455c2a6d33abbebfe678fdaa1728311838e21a.tar.bz2 dexon-solidity-e8455c2a6d33abbebfe678fdaa1728311838e21a.tar.lz dexon-solidity-e8455c2a6d33abbebfe678fdaa1728311838e21a.tar.xz dexon-solidity-e8455c2a6d33abbebfe678fdaa1728311838e21a.tar.zst dexon-solidity-e8455c2a6d33abbebfe678fdaa1728311838e21a.zip |
Move toHex implementation to cpp file.
Diffstat (limited to 'libdevcore')
-rw-r--r-- | libdevcore/CommonData.cpp | 20 | ||||
-rw-r--r-- | libdevcore/CommonData.h | 20 |
2 files changed, 21 insertions, 19 deletions
diff --git a/libdevcore/CommonData.cpp b/libdevcore/CommonData.cpp index 8d2639c9..2c22fd9a 100644 --- a/libdevcore/CommonData.cpp +++ b/libdevcore/CommonData.cpp @@ -29,6 +29,26 @@ using namespace std; using namespace dev; +string dev::toHex(bytes const& _data, int, HexPrefix _prefix, HexCase _case) +{ + std::ostringstream ret; + 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(_w) + << size_t(c); + } + + return (_prefix == HexPrefix::Add) ? "0x" + ret.str() : ret.str(); +} + int dev::fromHex(char _i, WhenError _throw) { if (_i >= '0' && _i <= '9') diff --git a/libdevcore/CommonData.h b/libdevcore/CommonData.h index 0a8c37d2..6da2b292 100644 --- a/libdevcore/CommonData.h +++ b/libdevcore/CommonData.h @@ -61,25 +61,7 @@ enum class HexCase /// Convert a series of bytes to the corresponding string of hex duplets. /// @param _w specifies the width of the first of the elements. Defaults to two - enough to represent a byte. /// @example toHex("A\x69") == "4169" -inline std::string toHex(bytes const& _data, int _w = 2, HexPrefix _prefix = HexPrefix::DontAdd, HexCase _case = HexCase::Lower) -{ - std::ostringstream ret; - 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(_w) - << size_t(c); - } - - return (_prefix == HexPrefix::Add) ? "0x" + ret.str() : ret.str(); -} +std::string toHex(bytes const& _data, int _w = 2, HexPrefix _prefix = HexPrefix::DontAdd, HexCase _case = HexCase::Lower); /// Converts a (printable) ASCII hex character into the correspnding integer value. /// @example fromHex('A') == 10 && fromHex('f') == 15 && fromHex('5') == 5 |