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}