我已经看到了很多方法,可以根据字符的表示形式将字符串“ 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 ;但是我正在处理非常大的字符串,并且希望有一种更快的方法来转换它 最佳答案 您可以使用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(),则整数必须符合无符号长整数的最大限制。关于c++ - 将字符串转换为整数(等效于二进制),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22887681/
10-11 22:38
查看更多