字节格式

时间:2013-09-06 19:14:08

标签: c# byte

你好我是在C#中使用字节的新手。

假设我想根据表单0xxxxxxx和1xxxxxxx比较字节。我如何获得我的比较的第一个值,同时从前面删除它?

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

不确定我理解,但在C#中,要编写binaray数字1000'0000,您必须使用十六进制表示法。因此,要检查两个字节的最左侧(最重要)位是否匹配,您可以执行此操作。

byte a = ...;
byte b = ...;

if ((a & 0x80) == (b & 0x80))
{
  // match
}
else
{
  // opposite
}

这使用逐位AND。要清除最重要的位,您可以使用:

byte aModified = (byte)(a & 0x7f);

或者如果您想再次分配回a

a &= 0x7f;

答案 1 :(得分:0)

您需要使用

等二进制操作
a&10000
a<<1

答案 2 :(得分:0)

这将检查两个字节并比较每个位。如果该位相同,它将清除该位。

     static void Main(string[] args)
    {
        byte byte1 = 255;
        byte byte2 = 255;

        for (var i = 0; i <= 7; i++)
        {
            if ((byte1 & (1 << i)) == (byte2 & (1 << i)))
            {
                // position i in byte1 is the same as position i in byte2

                // clear bit that is the same in both numbers
                ClearBit(ref byte1, i);
                ClearBit(ref byte2, i);
            }
            else
            {
                // if not the same.. do something here
            }

            Console.WriteLine(Convert.ToString(byte1, 2).PadLeft(8, '0'));
        }
        Console.ReadKey();
    }

    private static void ClearBit(ref byte value, int position)
    {
        value = (byte)(value & ~(1 << position));
    }
}