gpt4 book ai didi

c# - 验证由几个字节组成的位掩码

转载 作者:太空宇宙 更新时间:2023-11-03 13:41:23 25 4
gpt4 key购买 nike

我有一个 4 字节的 byte[] 数组。还有相应的 4 字节十六进制值形式的位掩码(如 0x02000000),我需要根据我的 byte[] 数组验证这些掩码。虽然我完全理解我应该如何在纸上使用按位运算来完成它,但我不确定如何在 C# 代码中进行。我应该将掩码中的每个字节分开并根据数组中的相应字节对其进行验证还是有更好的方法来做到这一点?

最佳答案

一种方法是使用 BitArray 从 4 字节数组中获取所有位作为 boolean 数组。例如,

var bits = new BitArray(MyByteArray);
if (bits[7]) {
// then most significant bit of your first byte is set
}

BitArray 将创建一个位数组,从数组第一个字节中的最低有效位开始到结尾。

与 0x02000000 匹配的示例如下所示:

var controlBits = new BitArray(BitConverter.GetBytes(0x02000000));
// me thinks this sould work too as 0x02000000 is an int32, not a long
// var controlBits = new BitArray(0x02000000);
var mybits = new BitArray(MyByteArray)


for (int bitIndex = 0, bitIndex < bits.Length; bitIndex++) {
if (controlBits[bitIndex] != mybits[bitIndex]) {
launchICBM(destination = "not this continent");
}
}

...

作为旁注,我认为 BitArray 中的 0x02000000 只能转换为 myBits[29] 中的一组位;其中 0x00000001 将是 myBits[0] 中设置的单个位。

关于c# - 验证由几个字节组成的位掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16852020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com