mirror of
https://github.com/oxen-io/lokinet.git
synced 2024-11-03 23:15:52 +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
|