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 算力,解读结果公开显示在下面。
还没有人解读过这个文件。