ClassLibraryWeiBao/QR二维码/Versions/VersionControl.cs
(开头部分) 5KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using Gma.QrCodeNet.Encoding.DataEncodation;
namespace Gma.QrCodeNet.Encoding.Versions
{
internal static class VersionControl
{
private const int NUM_BITS_MODE_INDICATOR = 4;
private const string DEFAULT_ENCODING = QRCodeConstantVariable.DefaultEncoding;
/// <summary>
/// Determine which version to use
/// </summary>
/// <param name="dataBitsLength">Number of bits for encoded content</param>
/// <param name="encodingName">Encoding name for EightBitByte</param>
/// <returns>VersionDetail and ECI</returns>
internal static VersionControlStruct InitialSetup(int dataBitsLength, Mode mode, ErrorCorrectionLevel level, string encodingName)
{
int totalDataBits = dataBitsLength;
bool containECI = false;
BitList eciHeader = new BitList();
//Check ECI header
if(mode == Mode.EightBitByte)
{
if(encodingName != DEFAULT_ENCODING && encodingName != QRCodeConstantVariable.UTF8Encoding)
{
ECISet eciSet = new ECISet(ECISet.AppendOption.NameToValue);
int eciValue = eciSet.GetECIValueByName(encodingName);
totalDataBits += ECISet.NumOfECIHeaderBits(eciValue);
eciHeader = eciSet.GetECIHeader(encodingName);
containECI = true;
}
}
//Determine which version group it belong to
int searchGroup = DynamicSearchIndicator(totalDataBits, level, mode);
int[] charCountIndicator = CharCountIndicatorTable.GetCharCountIndicatorSet(mode);
totalDataBits += (NUM_BITS_MODE_INDICATOR + charCountIndicator[searchGroup]);
int lowerSearchBoundary = searchGroup == 0 ? 1 : (VERSION_GROUP[searchGroup - 1] + 1);
int higherSearchBoundary = VERSION_GROUP[searchGroup];
//Binary search to find proper version
int versionNum = BinarySearch(totalDataBits, level, lowerSearchBoundary, higherSearchBoundary);
VersionControlStruct vcStruct = FillVCStruct(versionNum, level, encodingName);
vcStruct.isContainECI = containECI;
vcStruct.ECIHeader = eciHeader;
return vcStruct;
后面还有 96 行代码,购买后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。