将字符串转换为整数(二进制等效)
Convert string to integer ( binary equivalent )
我已经看到了很多方法,可以根据 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() 的最大限制。
相关文章:
- 从二进制文件中读取整数数组
- FlatBuffers/Protobuf 中是否有支持任意 24 位有符号整数定义的可移植二进制序列化架构?
- 读取二进制文件并解释为整数
- 将较大的整数写为二进制并读回它们会产生不好的结果
- C++ 将二进制字符串转换为整数或比较 2 个字符串以查找差异数
- 将二进制编码的无符号字符转换为整数
- 将整数的二进制数据转换为浮点数
- 将非数字字符串存储为二进制整数
- 如何在 gdb 中查看C++整数的二进制内容?
- 添加两个二进制数(整数数组)
- 将二进制转换为负整数
- 编译器C++如何在二进制代码中表示整数
- 除以 n 位二进制整数
- 如何在表达式计算器中处理二进制整数
- 将二进制整数转换为二进制分数
- 如何在 Haskell 中添加两个 n 位二进制整数
- 将二进制整数的向量转换为数字向量
- 读取二进制整数
- 无法从文件中读取简单的二进制整数?(C++)
- 在二进制整数 (C++) 中读取后,fstream 是否移动到下一个位置