Abstracted Base10_2_X to work with arbitrary containers and digit-types

This commit is contained in:
Leonetienne
2022-02-27 19:32:37 +01:00
parent 6e62b312ce
commit 50957fb9a3
3 changed files with 36 additions and 15 deletions

View File

@@ -1,15 +1 @@
#include "GeneralUtility.h"
#include <string>
std::string GeneralUtility::Base10_2_X(const std::uint64_t &num, const std::string &set, const std::uint32_t minOutLen) {
// Convert num to a string
std::stringstream ss;
ss << num;
const std::string numStr = ss.str();
// Use BaseX_2_Y to convert to outbase
const std::string convertedNum = BaseX_2_Y<std::string, std::string>(numStr, "0123456789", set, minOutLen);
// return it
return convertedNum;
}

View File

@@ -38,7 +38,8 @@ public:
//! \param num The number to be converted
//! \param set The desired set/base for the output to be in
//! \return `num` in base `set`
static std::string Base10_2_X(const std::uint64_t& num, const std::string& set, const std::uint32_t minOutLen = 1);
template <class T_Container>
static T_Container Base10_2_X(const std::uint64_t& num, const T_Container& set, const std::uint32_t minOutLen = 1);
//! Will convert a number from an arbitrary base to another arbitrary base.
//! \param num A string representation of a number
@@ -218,4 +219,18 @@ T_ContainerOut GeneralUtility::BaseX_2_Y(const T_ContainerIn& num, const T_Conta
return result;
}
template <class T_Container>
T_Container GeneralUtility::Base10_2_X(const std::uint64_t &num, const T_Container& set, const std::uint32_t minOutLen) {
// Convert num to a string
std::stringstream ss;
ss << num;
const std::string numStr = ss.str();
// Use BaseX_2_Y to convert to outbase
const T_Container convertedNum = BaseX_2_Y<std::string, T_Container>(numStr, "0123456789", set, minOutLen);
// return it
return convertedNum;
}
#endif //GENERALUTILITY_GENERALUTILITY_H