Added method to pad strings

This commit is contained in:
Leonetienne 2021-12-06 00:26:47 +01:00
parent 3c493a591d
commit 61a74f89a5

31
Util.h
View File

@ -36,6 +36,32 @@ inline std::bitset<T> Shiftr(const std::bitset<T>& bits, std::size_t amount)
return std::bitset<T>(ss.str()); return std::bitset<T>(ss.str());
} }
inline std::string PadStringToLength(const std::string& str, const std::size_t len, const char pad, const bool padLeft = true)
{
// Fast-reject: Already above padded length
if (str.length() >= len)
return str;
std::stringstream ss;
// Pad left:
if (padLeft)
{
for (std::size_t i = 0; i < len - str.size(); i++)
ss << pad;
ss << str;
}
// Pad right:
else
{
ss << str;
for (std::size_t i = 0; i < len - str.size(); i++)
ss << pad;
}
return ss.str();
}
//! Will convert a string to a fixed data block //! Will convert a string to a fixed data block
inline Block StringToBitblock(const std::string& s) inline Block StringToBitblock(const std::string& s)
{ {
@ -45,10 +71,7 @@ inline Block StringToBitblock(const std::string& s)
ss << std::bitset<8>(s[i]); ss << std::bitset<8>(s[i]);
// Pad rest with zeores // Pad rest with zeores
for (std::size_t i = s.size() * 8; i < BLOCK_SIZE; i++) return Block(PadStringToLength(ss.str(), 128, '0', false));
ss << '0';
return Block(ss.str());
} }
//! Will convert a string to a flexible data block //! Will convert a string to a flexible data block