diff --git a/SHAMap.h b/SHAMap.h index 51d1611eb9..dab368edec 100644 --- a/SHAMap.h +++ b/SHAMap.h @@ -70,6 +70,7 @@ public: // Convert to/from wire format (256-bit nodeID, 1-byte depth) void addIDRaw(Serializer &s) const; + std::string getRawString() const; static int getRawIDLength(void) { return 33; } SHAMapNode(const void *ptr, int len); }; diff --git a/SHAMapNodes.cpp b/SHAMapNodes.cpp index 9c15b8798e..d4955d8b04 100644 --- a/SHAMapNodes.cpp +++ b/SHAMapNodes.cpp @@ -111,6 +111,13 @@ void SHAMapNode::addIDRaw(Serializer &s) const s.add8(mDepth); } +std::string SHAMapNode::getRawString() const +{ + Serializer s(33); + addIDRaw(s); + return s.getString(); +} + SHAMapNode SHAMapNode::getChildNodeID(int m) const { // This can be optimized to avoid the << if needed assert((m>=0) && (m<16)); diff --git a/Serializer.h b/Serializer.h index 48b91c6565..5a8c600893 100644 --- a/Serializer.h +++ b/Serializer.h @@ -56,6 +56,7 @@ class Serializer void* getDataPtr() { return &mData.front(); } const std::vector& peekData() const { return mData; } std::vector getData() const { return mData; } + std::string getString() const { return std::string(reinterpret_cast(getDataPtr()), getLength()); } void secureErase() { memset(&(mData.front()), 0, mData.size()); erase(); } void erase() { mData.clear(); } int removeLastByte();