ClassLibraryWeiBao/QR二维码/DataEncodation/KanjiEncoder.cs

(开头部分) 3KB

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

using System;
using System.Collections;

namespace Gma.QrCodeNet.Encoding.DataEncodation
{
	/// <remarks>ISO/IEC 18004:2000 Chapter 8.4.5 Page 23</remarks>
	internal class KanjiEncoder : EncoderBase
	{
		internal KanjiEncoder()
			:base()
		{
		}
		
		internal override Mode Mode
        {
            get { return Mode.Kanji; }
        }

		/// <summary>
		/// Bitcount according to ISO/IEC 18004:2000 Kanji mode Page 25
		/// </summary>
		private const int KANJI_BITCOUNT = 13;
		
		internal override BitList GetDataBits(string content)
        {
			
			byte[] contentBytes = EncodeContent(content);
			int contentLength = base.GetDataLength(content);
			
			return GetDataBitsByByteArray(contentBytes, contentLength);
		}
		
		internal BitList GetDataBitsByByteArray(byte[] encodeContent, int contentLength)
		{
			BitList dataBits = new BitList();
			
			int bytesLength = encodeContent.Length;
			
			if(bytesLength == contentLength*2)
			{
				for(int i = 0; i < bytesLength; i += 2)
				{
					int encoded = ConvertShiftJIS(encodeContent[i], encodeContent[i+1]);
					dataBits.Add(encoded, KANJI_BITCOUNT);	
				}
			}
			else
				throw new ArgumentOutOfRangeException("Each char must be two byte length");
			
			return dataBits;
		}
		
        protected byte[] EncodeContent(string content)
        {
        	byte[] contentBytes;
        	try 
        	{
				contentBytes = System.Text.Encoding.GetEncoding("shift_jis").GetBytes(content);
			} catch (ArgumentException ex) {
				
后面还有 48 行代码,购买后查看完整代码

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

AI 解读 AI

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

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