CSharp examples for System:Byte Array
Calculate the CRC16 over a byte-array segment
/*/*from ww w . j ava 2 s .c o m*/ * Copyright 2012 Mario Vernari (http://cetdevelop.codeplex.com/) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; public class Main{ /// <summary> /// Calculate the CRC16 over a byte-array segment /// </summary> /// <param name="buffer">The source byte-array</param> /// <param name="offset">The index of the first byte to be considered</param> /// <param name="count">The number of the bytes to be considered</param> /// <returns>The resulting CRC16 value</returns> /// <remarks> /// Ported from plain-C source found here: http://www.modbustools.com/modbus_crc16.htm /// </remarks> public static ushort CalcCRC16( byte[] buffer, int offset, int count) { ushort result = 0xFFFF; while (count-- > 0) { if (buffer.Length <= offset) break; var temp = (byte)(buffer[offset++] ^ result); result >>= 8; result ^= CrcTable[temp]; } return result; } }