-2

以下函数将生成一个'\x'介于两者之间的字符串,

string GetHexEncode(string hexstring){
    string swap = "\\x";
    string h = "\\x";
    int si = hexstring.length();
    for (int i=0; i<hexstring.length(); i++)
    {
        if (i%2==0){
            swap+=hexstring.at(i);
        }
        else
        {
            swap+=hexstring.at(i)+h;
        }
    }
    return swap;
}

有时,程序会输出以下内容:

\x45\x39\xD3\x5B\x4F\xEA\x6F\x3C\xBC\x1B\xA0\xF4\xE7\x41\xE5\x8
\x45\x39\xD3\x5B\x4F\xEA\x6F\x3C\xBC\x1B\xA0\xF4\xE7\x41\xE5\x

如果发生这种情况,有什么方法可以将最后一部分更改为:

\x45\x39\xD3\x5B\x4F\xEA\x6F\x3C\xBC\x1B\xA0\xF4\xE7\x41\xE5
4

1 回答 1

2

从一个空开始swap并附加h+ 数字而不是\x在末尾附加一个。

此外,您应该在开始结果之前预先分配足够的空间,swap因为您之前知道结果的最终长度。这将节省字符串的重新分配。

于 2012-07-19T03:49:31.150 回答