如何将字符串转换为十六进制(字符串)?

时间:2016-06-26 08:09:10

标签: c++ string hex

我试图在C ++中将string转换为hex(string)。 我一直在寻找一些代码,但大多数代码返回" space"作为跳跃而不是" 20"。(如下例所示)

另一个请求(如果可能)是返回包含所有8个值的代码。不是" 0x",只有8个值(即使它们是0)。

编辑此代码以返回" 0":

std::string ToHex(std::string s)
{
    std::ostringstream ret;
    for (std::string::size_type i = 0; i < s.length(); ++i)
        ret << std::hex 
            << std::setfill('0') 
            << std::setw(8) 
            << std::uppercase
            << (int)s[i];
    return ret.str();
}

代码来自我编辑的C++ convert string to hexadecimal and vice versa

仍在尝试在没有跳转的情况下在同一个字符串中返回一个短语。

问题示例:

Image here

我的代码中没有写到:

void main()
{
Start:
    std::string input;
    std::cin >> input;
    int l = ToHex(input, true).length();
    std::string s = ToHex(input, true);
    std::cout << "IS: " << s << " with " << std::to_string(l) << std::endl;
    goto Start;
}

1 个答案:

答案 0 :(得分:1)

修正了,问题在于&#34; cin&#34;在当时添加空格。 在这里,您可以使用我的代码调用&#34; ToHex&#34;(问题中的那个可以正常工作)。

void main()
{
Start:
    std::string input = "";
    std::getline(std::cin, input); // Now read until the end of the line
    std::string s = ToHex(input);
    std::cout << "TEXT: " << s << std::endl;
    goto Start;
}