在C ++中,如何将ASCII字符串(不超过5个元素)转换为ASCII值的字符串,或者如下所示?
str = "ABCDE"; --> ascii_value_str = "6566676869";
或
str = "ABCDE"; --> long_int = 6566676869;
答案 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;
}