如何将字符串转换为长或另一个ascii值字符串?

时间:2015-08-17 03:29:17

标签: c++ string c++11

在C ++中,如何将ASCII字符串(不超过5个元素)转换为ASCII值的字符串,或者如下所示?

str = "ABCDE"; --> ascii_value_str = "6566676869";

str = "ABCDE"; --> long_int = 6566676869;

3 个答案:

答案 0 :(得分:2)

循环遍历字符串"ABCDE"并将每个元素转换为其ascii并使用ascii_value_str

添加到字符串std::to_string
for( const auto& ch: str )
{
  ascii_value_str  +=  std::to_string( (int) ch  );
}

要转换为long_int,只需使用std::atol

即可
long int long_int = std::atol( ascii_value_str .c_str() );

答案 1 :(得分:1)

您可以将每个角色转换为int:

int aval = (int) str[i];

现在您可以将其转换为基本乘法,或使用to_string函数将其转换为字符串。

答案 2 :(得分:1)

如果您使用c++11,则可以轻松进行编码,因为to_string()功能可用于c++11以上。现在,您所要做的就是使用他们的ASCII值。

查看代码段:

1将字符串转换为ASCII值字符串

#include <iostream>
#include <string>

using namespace std;

int main() {
    string str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ", output;

    for(int i=0; i<str.length(); i++) {
        output += to_string((int)str[i]);
    }

    cout<< output << endl;
    return 0;
}

2将String转换为ASCII值long int,但请注意long int的范围。对于长输入字符串,您可能会收到错误的答案,现在代码就是。

#include <iostream>
#include <string>

using namespace std;

int main() {
    string str = "xyz";   
    long int output = 0;

    for(int i=0; i<str.length(); i++) {
        if(str[i]/100)  {       // three digit ASCII Value
            output = 1000*output + str[i];
        } else if(str[i]/10) {  // two digit ASCII Value
            output = 100*output + str[i];
        } else {                // one digit ASCII Value
            output = 10*output + str[i];
        }

    }

    cout<< output << endl;
    return 0;
}