将字符串转换为整数(二进制等效)

Convert string to integer ( binary equivalent )

本文关键字:二进制 整数 字符串 转换      更新时间:2023-10-16

我已经看到了很多方法,可以根据 charecters 表示的内容(整数 12345)将字符串(如"12345")转换为整数,但我需要能够获取字符串的二进制等价物并将其转换为整数。例如,取字符串"Hello!在硬盘(或内存)上,它以二进制模式存储:

010010000110010101101100011011000110111100100001

如果将这些位视为二进制数而不是文本,则该模式也等于79600447942433。

"你好!" = 79600447942433

我现在唯一的方法是循环到字符串的末尾并将单个 charecter 转换为整数,然后乘以 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和相关转换替换为左移 ( << )。

您可以使用 std::bitset<> 类。 请参阅下面的示例。

#include <bitset>
#include <iostream>
using namespace std;
int main()
{
    bitset<64> allBits("010010000110010101101100011011000110111100100001");
    cout << allBits.to_ullong();  // C++ 11.  If using earlier version, use to_ulong().
}

请注意,如果使用 to_ulong(),则整数需要符合无符号长整型和无符号长整型(如果使用 to_ullong() 的最大限制。