Я работаю над функцией кодирования данных в буфер.У меня уже есть функции для части кодирования.
Я кодирую, а затем я возвращаюсь в вектор uint8_t, который является моим выходным буфером.Для ints у меня нет проблем, я использую свою функцию, и все готово, но теперь мне нужно кодировать строку.
Уже есть функция, созданная некоторыми разработчиками до меня, которая принимает в качестве аргумента char ** (буфер для заполнения), size_t * и char * - строка, которую я собираюсь кодировать.
Для char * я просто делаю .c_str () со своей строкой в моем объекте C ++, но яне знаю, что делать с буфером для заполнения, потому что я на самом деле использую вектор uint8_t.
Я подумал о создании временного буфера, затем вставке его в вектор путем его приведения, хорошо ли этоспособ?
Вот мой класс (родительский класс, который является виртуальным, но строка здесь, поэтому я покажу вам этот):
class CDnsMessage
{
public:
CDnsMessage();
virtual ~CDnsMessage();
virtual void GetSize() = 0;
uint32_t m_ttl;
eDnsClass m_class;
eDnsType m_type;
std::string m_domain;
uint8_t m_sizeDnsCorpse;
uint8_t m_sizeDomainName;
};
Кодируемая часть:
std::vector<uint8_t>& output
char * buffer;
std::size_t* bufsz;
EncodeSmallString(*buffer,*bufsz,RR_A_msg->m_domain.c_str());
output.push_back((uint8_t)buffer)