所以我有一个字符串x =“10101”,我需要将任意字符串y放入x中二进制的十六进制值。因此,如果x="10101"
然后y="0x15"
答案 0 :(得分:4)
最简单的方法是使用[bitset] [1]:
#include <iostream>
#include <string>
#include <bitset>
using namespace std;
int main(){
string binary_str("11001111");
bitset<8> set(binary_str);
cout << hex << set.to_ulong() << endl;
}
但我读到这不是最有效的方式......取决于你的意思。请记住,过早优化是所有邪恶的根源。。
答案 1 :(得分:1)
您应该使用strtol
(http://en.wikipedia.org/wiki/Strtol)函数与基数2将x转换为整数,然后使用sprintf
格式化结果字符串。
答案 2 :(得分:-1)
我不想向您提供完整的答案。
也就是说,基本思路应该是用最多3个零填充字符串的开头,这样你就可以将字符串拆分成长度为4的子字符串。 然后可以通过各种方式轻松将其转换为十六进制,最简单的方法是使用switch case语句。只有16个案例