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);
}
}