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

发布于 2024-10-31 10:14:06 字数 104 浏览 1 评论 0原文

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

So i have a string x = "10101" and i need to put into any string y the hex value of the binary in x. So if x="10101" then y="0x15"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

暮光沉寂 2024-11-07 10:14:06

最简单的方法是使用 [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;
}

但我读到这不是最有效的方法......取决于你想要什么。请记住,过早的优化是万恶之源

The simplest way to do this is using a [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;
}

But I read that it's not the most efficient way... Depends on what you whant. Remember that premature optimisation is the root of all evil.

梦里梦着梦中梦 2024-11-07 10:14:06

您可能应该使用 strtol ( http://en.wikipedia.org/wiki/ Strtol ) 函数以 2 为底,将 x 转换为整数,然后使用 sprintf 格式化结果字符串。

You should probably use strtol ( http://en.wikipedia.org/wiki/Strtol ) function with the base 2 to convert x to the integer and then use sprintf to format the result string.

凶凌 2024-11-07 10:14:06

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

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

I don't want to provide you with the complete answer.

That said, the basic idea should be fill the start of the string with up to 3 zero's so that you can split the string into substrings with a length of 4.
This can then easily be turned into hex by a variety of ways, the easiest being just using a switch case statement. There would only be 16 cases'

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文