老实说, 这是我无法完成的功课。任务是使用单个字节处理 8 个不同的复选框。包含复选框的表单的构造函数将一个字节作为输入,并根据输入将复选框设置为“已选中”。然后将标志字节存储在某处,之后每次一个复选框的状态发生变化(从选中到未选中以及从未选中到选中)我必须相应地更改标志字节。到目前为止,我只能做第一部分:
public Form1(byte flags)
{
InitializeComponent();
flags2 = flags;
if ((flags & 0x01) >> 0 != 0) checkBox1.Checked = true;
if ((flags & 0x02) >> 1 != 0) checkBox2.Checked = true;
if ((flags & 0x04) >> 2 != 0) checkBox3.Checked = true;
if ((flags & 0x08) >> 3 != 0) checkBox4.Checked = true;
if ((flags & 0x10) >> 4 != 0) checkBox4.Checked = true;
if ((flags & 0x20) >> 5 != 0) checkBox6.Checked = true;
if ((flags & 0x40) >> 6 != 0) checkBox7.Checked = true;
if ((flags & 0x80) >> 7 != 0) checkBox8.Checked = true;
}
但我真的不知道如何在 1 位上做一个 not。我考虑过使用加法,但剩下的会改变左边的位。我只能在休息没有影响的最重要的部分使用这个技巧。
private void checkBox8_CheckedChanged(object sender, EventArgs e)
{
flags2 += 0x80;
}
对于其他位,我真的可以使用一些帮助。