我正在开始C++类,并希望在十六进制表示和二进制之间转换字母.我可以设法打印出十六进制数字:
for(char c = 'a'; c <= 'z'; c++){ cout << hex << (int)c; }
但我不能对二进制文件做同样的事情.没有std::bin
我可以用来将十进制数转换为二进制数.
像这样:
for(char c = 'a'; c <= 'z'; c++){ std::bitsetbinary(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; }
在C++中没有二进制io操纵器.您需要手动执行转换,可能是使用bitshift运算符.实际转换并不是一项艰巨的任务,因此应该在C++初学者的能力范围内(而事实上,它不包含在标准库中可能不是:))
编辑:很多其他人都举了例子,所以我打算给出我喜欢的方法
void OutputBinary(std::ostream& out, char character) { for (int i = sizeof(character) - 1; i >= 0; --i) { out << (character >> i) & 1; } }
这也可能被模板化为任何数字类型.