当前位置:  开发笔记 > 编程语言 > 正文

如何在C++中将十六进制数转换为二进制?

如何解决《如何在C++中将十六进制数转换为二进制?》经验,为你挑选了2个好方法。

我正在开始C++类,并希望在十六进制表示和二进制之间转换字母.我可以设法打印出十六进制数字:

for(char c = 'a'; c <= 'z'; c++){
    cout << hex << (int)c;
}

但我不能对二进制文件做同样的事情.没有std::bin我可以用来将十进制数转换为二进制数.



1> Harper Shelb..:

像这样:

for(char c = 'a'; c <= 'z'; c++){
        std::bitset binary(c); //sizeof() returns bytes, not bits!
        std::cout << "Letter: " << c << "\t";
        std::cout << "Hex: " << std::hex << (int)c << "\t";
        std::cout << "Binary: " << binary << std::endl;
    }


我从来不知道这个!这正是OP想要的,我自己学到了一些东西.给予好评!
@chustar:你#include 了吗?
听起来你应该包括``并使用`CHAR_BIT`来摆脱那个8.

2> workmad3..:

在C++中没有二进制io操纵器.您需要手动执行转换,可能是使用bitshift运算符.实际转换并不是一项艰巨的任务,因此应该在C++初学者的能力范围内(而事实上,它不包含在标准库中可能不是:))

编辑:很多其他人都举了例子,所以我打算给出我喜欢的方法

void OutputBinary(std::ostream& out, char character)
{
  for (int i = sizeof(character) - 1; i >= 0; --i)
  {
    out << (character >> i) & 1;
  }
}

这也可能被模板化为任何数字类型.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有