我有一个具有十进制值的字符串。我需要将其转换为十六进制十进制值。我知道首先需要使用stoi将字符串转换为整数,然后使用stringstream std :: hex
转换为十六进制std::string hexString(std::string decimalString)
{
std::stringstream ss;
int val = std::stoi(decimalString);
ss << std::hex << val;
return ss.str();
}
由于我需要字符串输出,有没有办法直接转换而不先转换为整数然后转换为十六进制。
答案 0 :(得分:0)
当然可以,你可以直接在std :: string上实现转换,通过将字符串字符作为数字来操作。你必须在这些数字上实现乘法和加法,并且它比让CPU做的慢得多。
一般情况下,通过映射在基数A和B之间的有效转换仅在某些情况下是可能的,最简单的是当B是A(或A的B)的幂时,例如,如果A = 2且B = 4:
1101010010
3 1 1 0 2
因此1101010010-base2变为31102-base4,通过将base2数字对映射到base4数字来完成转换。请注意,这基本上是相同的,它只是中间整数现在只有2位宽,但至少中间的宽度不依赖于输入的宽度。