iTextSharp.text.pdf.qrcode.Encoder.AppendKanjiBytes C# (CSharp) Method

AppendKanjiBytes() static private method

static private AppendKanjiBytes ( String content, BitVector bits ) : void
content String
bits BitVector
return void
        static void AppendKanjiBytes(String content, BitVector bits) {
            byte[] bytes;
            try {
                bytes = Encoding.GetEncoding("Shift_JIS").GetBytes(content);
            }
            catch (Exception uee) {
                throw new WriterException(uee.Message);
            }
            int length = bytes.Length;
            for (int i = 0; i < length; i += 2) {
                int byte1 = bytes[i] & 0xFF;
                int byte2 = bytes[i + 1] & 0xFF;
                int code = (byte1 << 8) | byte2;
                int subtracted = -1;
                if (code >= 0x8140 && code <= 0x9ffc) {
                    subtracted = code - 0x8140;
                }
                else if (code >= 0xe040 && code <= 0xebbf) {
                    subtracted = code - 0xc140;
                }
                if (subtracted == -1) {
                    throw new WriterException("Invalid byte sequence");
                }
                int encoded = ((subtracted >> 8) * 0xc0) + (subtracted & 0xff);
                bits.AppendBits(encoded, 13);
            }
        }