byte[] data = new byte[] {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
Ⅰ.如果截取2位、4位或者8位長度的字節數組,可以分別用 BitConverter.ToInt16、BitConverter.ToInt32、BitConverter.ToInt64截取:
⑴ 從第1位開始截取2個字節則 BitConverter.ToInt16(data,1);
結果 513
注釋:BitConverter.ToUInt16()的用法,是把兩個字節轉換為無符號整數
所以☞取出的字節為{1,2}→轉化為16進制{01,02}→轉為無符號整數,應該倒過來排{02,01}→轉為十進制即將{0201}轉為十進制→{513}!(請忽略我數組的書寫格式!)♓
⑵ 從第2位開始截取4個字節則 BitConverter.ToInt32(data,2);
結果 84148994
同⑴理:{2,3,4,5}→{02,03,04,05}→{5040302}→{84148994}!
⑶ 從第3位開始截取8個字節則 BitConverter.ToInt64(data,3);
結果 723118041428460547
同⑴理:{3,4,5,6,7,8,9,10}→{03,04,05,06,07,08,09,0A}→{A09080706050403}→{723118041428460547}!
Ⅱ.如果截取的位數不規則,則使用Skip().Take().ToArray()
⑴ 從第5位開始(不包含第5位)截取3個字節 data.Skip(5).Take(3).ToArray();
結果 {5,6,7}
⑵ 從第4位開始(不包含第5位)截取到最后 data.Skip(4).ToArray();
結果 {4,5,6,7,8,9,10,11,12,12,14,15}