最近需要写一个16进制字符串异或的功能,初写一版后发现功能虽然满足,但问题很多,记录下来供大家参考。
第一版代码
具体内容如下
#include <string>
#include <sstream>
#include <iomanip>
std::string IntToHex(int value) {
std::stringstream ss;
ss << std::hex << std::setfill('0') << std::setw(2) << value;
return ss.str();
}
std::string XorStr(const std::string& str1, const std::string& str2) {
if (str1.size() != str2.size() || str1.size() % 2 != 0) {
return ""; // Error handling for unequal length or odd length
}
size_t len = str1.size();
std::string ret = "";
for (size_t i = 0; i < len; i += 2) {
std::string c1 = str1.substr(i, 2);
std::string c2 = str2.substr(i, 2);
std::string c3 = IntToHex(std::stoi(c1, nullptr, 16) ^ std::stoi(c2, nullptr, 16));
ret.append(c3);
}
return ret;
}
上面程序存在的问题有:
- 异常处理</