位掩码和 -offset by offset 和 length

Bitmask and -offset by offset and length

我想创建一个位掩码和位掩码偏移量和长度。

例如: offset = 8length = 4

位掩码应为:0xF00 = 3840(十进制)(1111.0000.0000)

位偏移量应为:0x100 = 256(十进制)

我尝试了以下方法,但这是错误的:

ulong mask = 0;
for (int i = 0; i < offset; i++)
{
    mask += (1 << 1) | 0;
}

我该怎么做?

一种方式可能是这样的:

ulong mask = ((1 << length) - 1) << offset;

我不清楚你为什么想要 bitoffset 值,但这应该只是按你的 offset 值移动的问题,对吧?例如:

ulong bitoffset = 1 << offset;