【问题标题】:How to convert hex into dec string in C++? [duplicate]如何在 C++ 中将十六进制转换为十进制字符串? [复制]
【发布时间】:2020-01-09 15:06:08
【问题描述】:

我正在使用 C++11。有没有一个函数可以获取十六进制字符串并将其转换为十进制?

我试图找到有关我在 StackOverflow 某处看到的 unicode() 函数的一些信息,但我找不到任何有关它的信息。

例如,我们有一个十六进制符号:U+03C0。怎么转成dec:960?

让我们想象一下:

char* pi_symbol = hexToDec("U+03C0");
cout << "The pi dec is " << pi_symbol << endl;

得到这个:

pi dec 是 960

【问题讨论】:

  • FWIW,小写的 pi 是U+03C0
  • @NathanOliver 已修复

标签: c++ string utf-8 hex decimal


【解决方案1】:

你可以使用std::hex:

#include <iostream>
#include <sstream>
int main()
{
    int n;
    std::istringstream("03C0") >> std::hex >> n;
    std::cout << n;
}

【讨论】:

  • 你能给我一个例子如何使用std::hex,因为我真的不明白。
  • @EadwineYoun 链接中有一个
  • @EadwineYoun 检查此实时链接wandbox.org/permlink/qm8rj1sBIroRjqsT
  • 嗯,为什么给我们3C0而不是U+03C0
  • 因为U+03C0 不是十六进制的。它是 Unicode 值的表示形式。严格来说,十六进制仅表示以 16 为基数。例如,0x3C0 的前缀 0x 只是提供的语法糖,因此我们可以区分以 16、8、10 为基数的值(C/C++ 上下文)。忽略细节,简单的答案:U+ 前缀不是表示十六进制的前缀。它是表示可能的 Unicode 特性的前缀。切掉 U+,然后解释值(十六进制数)。
猜你喜欢
  • 2018-01-31
  • 1970-01-01
  • 1970-01-01
  • 2016-03-06
  • 2022-07-22
  • 2011-08-25
  • 2014-04-28
  • 2018-01-22
  • 2018-01-03
相关资源
最近更新 更多