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