我见过很多方法可以根据字符代表的内容(整数 12345)将诸如“12345”的字符串转换为整数,但我需要能够获取字符串的二进制等价物并转换 那变成一个整数。例如,以字符串“Hello!”为例。 .在硬盘驱动器(或内存)上,它以二进制模式存储:
010010000110010101101100011011000110111100100001
如果您将这些位视为二进制数而不是文本,那么该模式也等于 79600447942433。
“你好!” = 79600447942433
我现在唯一的方法是循环直到字符串的末尾并将单个字符转换为整数,然后乘以 2^ position_of_charecter
#include <string>
#include <cmath>
using namespace std ;
// ...
string str = "Hello!" ; int i , total , temp ; unsigned char letter ;
for ( i = 0 ; i < str.length() ; i++ )
{
letter = string[ i ] ;
temp = ( int ) letter ;
total += ( temp * pow( 2 , i ) ) ;
}
cout << "\"Hello!\" is equal to " << total << endl ;
但是我正在处理非常大的字符串,并且想要一种更快的方法来转换它
最佳答案
第一个改进:替换pow
以及左移的相关转换 ( <<
)。
关于c++ - 将字符串转换为整数(相当于二进制),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22887681/