RT:例子:string str = "asdfasdgsg";
谢谢!
这是为了RSA加密用的……
用atoi函数,例如:
string str = "asdfasdgsg";
int i = atoi(str.c_str());
转换后,i结果为0
可以用man atoi查看相关库函数,如:
追问为零怎么办?
追答字符串里面没有数字,转换出来就是零啊!
追问我RSA加密,要把文本转为数字啊!
追答我猜你要的不是把"123"转成整形的123吧,而是对应的二进制流,比如:
abcdef123456 ==> 0xAB CD EF 12 34 56这样吧?
是的,可以将asdfasfasdf等转为二进制,再用二进制来操作,请问怎么转?谢谢
追答typedef unsigned char BYTE;unsigned char z_H2C(char c)
{
if (c>='a' && c<='f')
return c-'a'+10;
if (c>='A' && c<='F')
return c-'A'+10;
if (c>='0' && c<='9')
return c-'0';
return 0;
}
BYTE* Str2BIN(const char* sStr, BYTE * bBIN,int nBINLen)
{
memset(bBIN,0,nBINLen);
int nLen = strlen(sStr);
for(int i=0;i<nLen;i+=2)
{
*(bBIN+i/2) = z_H2C(sStr[i])*16+z_H2C(sStr[i+1]);
}
return bBIN;
}
//使用方法
char *pText = "abcd1234";
int iLen = strlen(pText) / 2 ;
BYTE ucOut[50] = {0};
Str2BIN(pText, ucOut, iLen);
需要注意的是,源串中只能是16进制的数字,字母只能是a~f
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-09-18
将string转化为int
#include <iostream>
#include<sstream>
#include<string>
using namespace std;
int main()
{
string str="110";
istringstream istr(str);
int i=0;
istr>>i;
cout<<i<<endl;
cout << "Hello world!" << endl;
return 0;
}追问
#include <iostream>
#include<sstream>
#include<string>
using namespace std;
int main()
{
string str="110";
istringstream istr(str);
int i=0;
istr>>i;
cout<<i<<endl;
cout << "Hello world!" << endl;
return 0;
}追问
好像string str = "dfsdsafds"不行吧/?
第2个回答 2013-09-18
#include <iostream>
using namespace std;
int main ( )
{
string a="12341234";
int b=atoi(a.data());
cout << b;
return 0;
}追问
using namespace std;
int main ( )
{
string a="12341234";
int b=atoi(a.data());
cout << b;
return 0;
}追问
linux下好像不行啊?我转换后为0 当然是第"dsaifsafsdaf"这样的字符串,数字不用
第3个回答 2013-09-18
看错了 ,以为是转char*追问
e额,有什么办法么?
第4个回答 2013-09-18
ctoi之类的函数