// // GBKÎı¾±àÂëÆ÷ // #include "TextEncoder.h" TextEncoder::TextEncoder() { size = 0; data = nullptr; current_index = 0; } TextEncoder::TextEncoder(String text) { current_index = 0; size = text.length(); data = new byte[size]; for (int i = 0; i < size; i++) data[i] = text[i]; } TextEncoder::~TextEncoder() { if (data != nullptr) { delete[] data; data = nullptr; } } void TextEncoder::EncodeText(String text) { if (data != nullptr) { delete[] data; data = nullptr; } current_index = 0; size = text.length(); data = new byte[size]; for (int i = 0; i < size; i++) data[i] = text[i]; } bool TextEncoder::HasNextChar() { return (current_index < size); } bool TextEncoder::IsLastChar() { return ((current_index + 1) >= size); } void TextEncoder::GetNextChar(byte& bit1, byte& bit2) { if (data[current_index] >= 0x7F) //ÖÐÎÄ { bit1 = data[current_index]; bit2 = data[current_index + 1]; current_index += 2; } else { bit1 = data[current_index]; bit2 = 0x00; current_index++; } }