我正在读一本有关C++的书。作者显示了这个枚举:
[Flags] enum class FlagBits{ Ready = 1, ReadMode = 2, WriteMode = 4,
EOF = 8, Disabled = 16};
FlagBits status = FlagBits::Ready | FlagBits::ReadMode | FlagBits::EOF;
他说状态等于“0000 0000 0000 0000 0000 0000 0000 0000 1011”,但是当我将状态写入控制台时:
Console::WriteLine(L”Current status: {0}”, status);
它显示:“当前状态:就绪,ReadMode,EOF”。他怎么知道它,如何将状态写入控制台以显示其二进制形式?
最佳答案
你应该看看System::Convert::ToString
int main(array<System::String ^> ^args)
{
FlagBits status = FlagBits::Ready | FlagBits::ReadMode | FlagBits::EOF;
Console::WriteLine(L"Current status: {0}", System::Convert::ToString( ( int ) status, 2 ) );
Console::ReadLine();
return 0;
}
输出:当前状态:1011
编辑:如果您想要空零“填充”,请执行以下操作:
Console::WriteLine(L"Current status: {0}", System::Convert::ToString( ( int ) status, 2 )->PadLeft( 32, '0' ) );
如果您希望将其分割成字节大小的片段,则只需将结果分割并插入空格/连字符即可。
关于enums - 显示对象中的位,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6416489/