mirror of
https://github.com/oxen-io/lokinet.git
synced 2024-11-09 13:10:25 +00:00
32 lines
652 B
C++
32 lines
652 B
C++
|
#ifndef LLARP_ENCODE_HPP
|
||
|
#define LLARP_ENCODE_HPP
|
||
|
#include <cstdlib>
|
||
|
|
||
|
namespace llarp
|
||
|
{
|
||
|
/// encode V as hex to stack
|
||
|
/// null terminate
|
||
|
/// return pointer to base of stack buffer on success otherwise returns
|
||
|
/// nullptr
|
||
|
template < typename V, typename Stack >
|
||
|
const char*
|
||
|
HexEncode(const V& value, Stack& stack)
|
||
|
{
|
||
|
size_t idx = 0;
|
||
|
char* ptr = &stack[0];
|
||
|
char* end = ptr + sizeof(stack);
|
||
|
while(idx < value.size())
|
||
|
{
|
||
|
auto wrote = snprintf(ptr, end - ptr, "%.2x", value[idx]);
|
||
|
if(wrote == -1)
|
||
|
return nullptr;
|
||
|
ptr += wrote;
|
||
|
idx++;
|
||
|
}
|
||
|
*ptr = 0;
|
||
|
return &stack[0];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#endif
|