/// <summary> /// RSブロックのデータコード語数を返します。 /// </summary> /// <param name="ecLevel">誤り訂正レベル</param> /// <param name="version">型番</param> /// <param name="preceding">RSブロック前半部分は true を指定します。</param> public static int GetNumberDataCodewords( ErrorCorrectionLevel ecLevel, int version, bool preceding) { int numDataCodewords = DataCodeword.GetTotalNumber(ecLevel, version); int numRSBlocks = _totalNumbers[(int)ecLevel][version]; int numPreBlockCodewords = numDataCodewords / numRSBlocks; if (preceding) { return(numPreBlockCodewords); } else { int numPreBlocks = GetTotalNumber(ecLevel, version, true); int numFolBlocks = GetTotalNumber(ecLevel, version, false); if (numFolBlocks > 0) { return((numDataCodewords - numPreBlockCodewords * numPreBlocks) / numFolBlocks); } else { return(0); } } }
/// <summary> /// RSブロックの誤り訂正コード語数を返します。 /// </summary> /// <param name="ecLevel">誤り訂正レベル</param> /// <param name="version">型番</param> public static int GetNumberECCodewords( ErrorCorrectionLevel ecLevel, int version) { int numDataCodewords = DataCodeword.GetTotalNumber(ecLevel, version); int numRSBlocks = _totalNumbers[(int)ecLevel][version]; return((Codeword.GetTotalNumber(version) / numRSBlocks) - (numDataCodewords / numRSBlocks)); }
/// <summary> /// RSブロック数を返します。 /// </summary> /// <param name="ecLevel">誤り訂正レベル</param> /// <param name="version">型番</param> /// <param name="preceding">RSブロック前半部分は true を指定します。</param> public static int GetTotalNumber( ErrorCorrectionLevel ecLevel, int version, bool preceding) { int numDataCodewords = DataCodeword.GetTotalNumber(ecLevel, version); int numRSBlocks = _totalNumbers[(int)ecLevel][version]; int numFolBlocks = numDataCodewords % numRSBlocks; if (preceding) { return(numRSBlocks - numFolBlocks); } else { return(numFolBlocks); } }