2
所以我很好奇,这里究竟发生了什么?位移c#这里发生了什么?
static void SetUInt16 (byte [] bytes, int offset, ushort val)
{
bytes [offset] = (byte) ((val & 0x0ff00) >> 8);
bytes [offset + 1] = (byte) (val & 0x0ff);
}
基本上在这段代码的想法是在特定的位置设置一个16位的整型成一个字节的缓冲区,但问题是我想用效仿
using(var ms = new MemoryStream())
using(var w = new BinaryWriter(ms))
{
w.Write((ushort)1);
}
我米期待读1
,但我得到256
。这是一个排序问题?
这就是我所假设的,只是不完全理解按位操作等。 – 2012-07-13 21:00:35
这不是一个操作,只是在这里洗牌字节。 Skeet写了一个bigendian作家类:http://www.yoda.arachsys.com/csharp/miscutil/ – 2012-07-13 21:02:41
所以我可以这么做,'w.Write((byte)((val&0x0ff00)>> 8) )'然后'w.Write((byte)(val&0x0ff))',因为它只是在翻转它们呢? – 2012-07-13 21:07:52