我有一个字符串,其中包含一些二进制数据。xml 格式的字符串,所以在处理它之前,我需要将二进制数据转换为 base64 格式。我正在使用一个名为 findXMLTag 的函数,该函数将在给定包含它的 xml 标记的情况下找到数据的开始和结束位置。现在我可以将该数据转换为 base64,但在用新的 base64 数据替换旧的二进制数据时遇到问题。
问题是我不能使用任何类型的字符串,因为当它找到一个空字符时,它会将其视为字符串的终止点,但事实上,因为我在字符串中存储了二进制数据,所以空字符可以是一部分我的二进制数据。
所以我想我正在寻找某种二进制替换,但我不知道如何使它工作。提前感谢您的任何帮助。
这是我用来定位 xml 字符串中数据的开始和结束的代码。
std::vector<TForm1::Pair> TForm1::findXMLTag(char *XMLString, char* XMLTag, int XMLSize)
{
void *found = XMLString;
int XMLTagLen = strlen(XMLTag);
std::vector<TForm1::Pair> result;
TForm1::Pair pair;
AnsiString XMLTagEnd = "</";
XMLTagEnd += &XMLTag[1];
while(found = memmem(XMLString, XMLSize - ((char*)found - XMLString), XMLTag, XMLTagLen))
{
if(found == NULL)
return result;
found = (char*)found + XMLTagLen;
pair.start = int((char*)found - XMLString);
found = memmem(found, XMLSize - ((char*)found - XMLString), XMLTagEnd.c_str(), XMLTagEnd.Length());
pair.end = int((char*)found - XMLString);
found = (char*)found + XMLTagEnd.Length();
result.push_back(pair);
}
return result;
}