将表示二进制的字符串转换为表示等效十六进制的字符串

时间:2011-04-11 23:41:55

标签: c++ string binary hex

所以我有一个字符串x =“10101”,我需要将任意字符串y放入x中二进制的十六进制值。因此,如果x="10101"然后y="0x15"

3 个答案:

答案 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)

您应该使用strtolhttp://en.wikipedia.org/wiki/Strtol)函数与基数2将x转换为整数,然后使用sprintf格式化结果字符串。

答案 2 :(得分:-1)

我不想向您提供完整的答案。

也就是说,基本思路应该是用最多3个零填充字符串的开头,这样你就可以将字符串拆分成长度为4的子字符串。 然后可以通过各种方式轻松将其转换为十六进制,最简单的方法是使用switch case语句。只有16个案例