Elight.Utility/Files/DataMatrix/DmtxCommon.cs

(开头部分) 10KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;

namespace DataMatrix.net
{
	// Token: 0x02000024 RID: 36
	internal static class DmtxCommon
	{
		// Token: 0x060001CC RID: 460 RVA: 0x0000EE74 File Offset: 0x0000D074
		internal static void GenReedSolEcc(DmtxMessage message, DmtxSymbolSize sizeIdx)
		{
			byte[] array = new byte[69];
			byte[] array2 = new byte[68];
			int symbolAttribute = DmtxCommon.GetSymbolAttribute(DmtxSymAttribute.DmtxSymAttribSymbolDataWords, sizeIdx);
			int symbolAttribute2 = DmtxCommon.GetSymbolAttribute(DmtxSymAttribute.DmtxSymAttribSymbolErrorWords, sizeIdx);
			int num = symbolAttribute + symbolAttribute2;
			int symbolAttribute3 = DmtxCommon.GetSymbolAttribute(DmtxSymAttribute.DmtxSymAttribBlockErrorWords, sizeIdx);
			int symbolAttribute4 = DmtxCommon.GetSymbolAttribute(DmtxSymAttribute.DmtxSymAttribInterleavedBlocks, sizeIdx);
			if (symbolAttribute3 != symbolAttribute2 / symbolAttribute4)
			{
				throw new Exception("Error generation reed solomon error correction");
			}
			for (int i = 0; i < array.Length; i++)
			{
				array[i] = 1;
			}
			for (int j = 1; j <= symbolAttribute3; j++)
			{
				for (int k = j - 1; k >= 0; k--)
				{
					array[k] = DmtxCommon.GfDoublify(array[k], j);
					if (k > 0)
					{
						array[k] = DmtxCommon.GfSum(array[k], array[k - 1]);
					}
				}
			}
			for (int l = 0; l < symbolAttribute4; l++)
			{
				for (int m = 0; m < array2.Length; m++)
				{
					array2[m] = 0;
				}
				for (int j = l; j < symbolAttribute; j += symbolAttribute4)
				{
					int b = (int)DmtxCommon.GfSum(array2[symbolAttribute3 - 1], message.Code[j]);
					for (int k = symbolAttribute3 - 1; k > 0; k--)
					{
						array2[k] = DmtxCommon.GfSum(array2[k - 1], DmtxCommon.GfProduct(array[k], b));
					}
					array2[0] = DmtxCommon.GfProduct(array[0], b);
				}
				int blockDataSize = DmtxCommon.GetBlockDataSize(sizeIdx, l);
				int num2 = symbolAttribute3;
				for (int j = l + symbolAttribute4 * blockDataSize; j < num; j += symbolAttribute4)
				{
					message.Code[j] = array2[--num2];
				}
				if (num2 != 0)
				{
					throw new Exception("Error generation error correction code!");
后面还有 276 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。