【问题标题】:Convert decimal string to hex string without storing into interger将十进制字符串转换为十六进制字符串而不将字符串转换为整数
【发布时间】:2018-02-01 07:27:17
【问题描述】:

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

由于我需要字符串输出,有什么方法可以直接转换,而不需要先转换为整数再转换为十六进制。

【问题讨论】:

  • 知道需要,问是否需要?
  • 不在标准中,您可以花时间创建自己的,但我认为您的功能如果能满足您的需求就更好了。
  • 我认为没有比将字符串转换为十进制数并将十进制数转换为十六进制更简单的方法了。我会等待有人证明我错了。

标签: c++ stdstring


【解决方案1】:

当然可以,你可以直接在std::string上实现转换,通过将字符串字符操作为数字。但是,您必须对这些数字进行乘法和加法运算,这比让 CPU 执行要慢得多。

一般而言,通过映射在基数 A 和 B 之间进行有效转换仅在某些情况下是可能的,最简单的是当 B 是 A 的幂(或 B 的 A)时,例如,如果 A=2 和 B=4:

1101010010
 3 1 1 0 2

所以 1101010010-base2 变为 31102-base4,转换是通过将 base2 数字对映射到 base4 数字来完成的。请注意,这本质上是相同的,只是中间整数现在只有 2 位宽,但至少中间整数的宽度不取决于输入的宽度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 2014-12-04
    • 1970-01-01
    • 2013-02-07
    • 2018-01-31
    相关资源
    最近更新 更多