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