我正在读一本有关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/

10-13 08:00