将十进制字符串转换为十六进制字符串而不存储到整数

时间:2018-02-01 07:27:17

标签: c++ stdstring

我有一个具有十进制值的字符串。我需要将其转换为十六进制十进制值。我知道首先需要使用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();
}

由于我需要字符串输出,有没有办法直接转换而不先转换为整数然后转换为十六进制。

1 个答案:

答案 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位宽,但至少中间的宽度不依赖于输入的宽度。