2

如果我的配置标头的某个位还不是 1,我想将其设置为 1(字节 10 的位 3)。然后我想将这个新的配置标头保存为我的旧配置标头。我可以设置好位,但是我很难用我的新字节替换旧字节来更新我的配置头。我希望我的新配置头是 ConfigHeader = [128;0;0;0;0;0;0;0;0;0;30];。我知道这可能是一个非常简单的解决方案!

ConfigHeader = [128;0;0;0;0;0;0;0;0;0;26];
ByteTen = ConfigHeader(11);
if bitget(ByteTen,3) == 0
% Set bit 3 of byte 10 to 1
bitset(ByteTen,3);

% Replace old config header with new one (bit changed to 1)
ConfigHeader = ??????
end
4

2 回答 2

1

我不习惯位操作,但从你的代码来看,下一个逻辑步骤是:

ConfigHeader(11) = ByteTen

也许您的整个代码甚至可以简化为:

bitset(ConfigHeader(11),3)

毕竟,位只能是 0 或 1,因此如果您总是想以 1 结尾,则无需对其进行测试。

于 2013-10-17T11:49:24.307 回答
1

您必须将修改后的值分配回 ConfigHeader,例如通过添加以下行:

ConfigHeader(11) = bitset(ByteTen,3);

这一行:

bitset(ByteTen,3);

只要你不使用它的输出,它自己什么都不做。

于 2013-10-17T12:12:19.677 回答