我有一个示例C#程序,如下所示。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace Rextester
{
public class Program
{
public static void Main(string[] args)
{
//Your code goes here
byte prot = 1;
byte media = 3;
byte type = 7;
var ProtoMediaType = (byte)(((int)proto << 6) | ((int)media << 6) | ((int)type));
//m_ProtocolMediaType = 0;
Console.WriteLine(m_ProtocolMediaType);
}
}
}
它也可以在Rextester test code
中找到我试图以下列方式为一个字节赋值
BIT 7 - 原型 BIT 6:4 - 媒体 比特3:0 - 类型
在上面的代码中,我将proto
左移6
。我的结果为199
。
即使我将proto
移到7
,我也会得到相同的结果。
信封计算后面显示我应该0xb7
(183
)
我做错了什么。
答案 0 :(得分:2)
1&lt;&lt; 6 = 0x001000000
3&lt;&lt; 6 = 0x011000000
7 = 0x000000111
(OR)= 0x011000111 = 199
怎么了?