【发布时间】:2014-04-05 22:30:07
【问题描述】:
我已经看到很多方法可以根据字符表示的内容(整数 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<>'s 字符串转换函数。 -
您的编译器支持 64 位 int 类型?您的代码 sn-p 中的“总”变量是一个 int。
-
你的号码与二进制不匹配,那也不好。您可能想使用 pow(2,i*8) 来代替。
-
您在问题中说“我需要能够将字符串二进制等价物转换为整数”,但您的代码示例不是转换“0010001”字符串而是文本字符串“你好!”,不清楚你在追求什么!!
-
@dampsquid "hello" 似乎是字符串输入。然后,他根据每个字母的 ascii 代码将每个字符转换为其二进制等价物……或者看起来是这样。然后将这些位用作整数。
标签: c++ string data-conversion