我正在从单色位图中读取位。我short
以相反的顺序存储每16位。如果位图中的位为黑色,则存储 1。如果为白色,则存储 0。
例如:对于位图:bbbw bbbw bbbw wwww
我的简称是:0000 0111 0111 0111
我尝试这样做的第一种方法是:
short m;
// ...
Color c = bmp.GetPixel(j, i);
if (c.R == Color.Black)
m |= short.MinValue;
m >>= 1;
// ...
经过一次分配和轮班后,我得到了预期的 -32768(1000 0000 0000 0000)。
第二次后我得到-16384(1100 0000 0000 0000)。
我更改了要使用的代码ushort
并将if
行更改为s |= (ushort)Math.Pow(2, 15);
,现在它可以工作了。
我的问题是:为什么符号位不会在 .NET 中移动?有没有办法移动符号位?