/*****************************************************/ /// <summary> /// This function returns the byte array included 1byte checksum value. /// </summary> /// <param name="data"></param> /// <param name="type">This parameter means checksum algorithm type.</param> /// <returns></returns> /*****************************************************/ public static IEnumerable <byte> WithCheckSum8(this IEnumerable <byte> data, CheckSum8Type type = CheckSum8Type.Xor) { if (type == CheckSum8Type.Xor) { return(data.Append(data.CheckSum8Xor())); } else if (type == CheckSum8Type.NMEA) { return(data.Append(data.CheckSum8Xor())); } else if (type == CheckSum8Type.Modulo256) { return(data.Append(data.CheckSum8Modulo256())); } else if (type == CheckSum8Type.TwosComplement) { return(data.Append(data.CheckSum8TwosComplement())); } return(new List <byte>()); }
/*****************************************************/ /// <summary> /// This function returns 1byte checksum. /// </summary> /// <param name="data"></param> /// <param name="type">This parameter means checksum algorithm type.</param> /// <see cref="https://www.scadacore.com/tools/programming-calculators/online-checksum-calculator/"/> /// <seealso cref="https://nmeachecksum.eqth.net/"/> /// <returns></returns> /*****************************************************/ public static byte CheckSum8(this IEnumerable <byte> data, CheckSum8Type type = CheckSum8Type.Xor) { byte result = 0; if (type == CheckSum8Type.Xor) { result = data.CheckSum8Xor(); } else if (type == CheckSum8Type.NMEA) { result = data.CheckSum8Xor(); } else if (type == CheckSum8Type.Modulo256) { result = data.CheckSum8Modulo256(); } else if (type == CheckSum8Type.TwosComplement) { result = data.CheckSum8TwosComplement(); } return(result); }