Repo created
This commit is contained in:
parent
4af19165ec
commit
68073add76
12458 changed files with 12350765 additions and 2 deletions
48
libs/coding/hex.cpp
Normal file
48
libs/coding/hex.cpp
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
#include "coding/hex.hpp"
|
||||
|
||||
#include "base/assert.hpp"
|
||||
|
||||
namespace impl
|
||||
{
|
||||
static char constexpr kToHexTable[] = "0123456789ABCDEF";
|
||||
|
||||
void ToHexRaw(void const * src, size_t size, void * dst)
|
||||
{
|
||||
uint8_t const * ptr = static_cast<uint8_t const *>(src);
|
||||
uint8_t const * end = ptr + size;
|
||||
uint8_t * out = static_cast<uint8_t *>(dst);
|
||||
|
||||
while (ptr != end)
|
||||
{
|
||||
*out++ = kToHexTable[(*ptr) >> 4];
|
||||
*out++ = kToHexTable[(*ptr) & 0xF];
|
||||
++ptr;
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
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<uint8_t const *>(src);
|
||||
uint8_t const * end = ptr + size;
|
||||
uint8_t * out = static_cast<uint8_t *>(dst);
|
||||
|
||||
while (ptr < end)
|
||||
{
|
||||
*out = HexDigitToRaw(*ptr++) << 4;
|
||||
*out |= HexDigitToRaw(*ptr++);
|
||||
++out;
|
||||
}
|
||||
}
|
||||
} // namespace impl
|
||||
Loading…
Add table
Add a link
Reference in a new issue