#include <iostream>
std::string hex2bin(const std::string& hex) {
std::string bin;
for (unsigned int i = 0; i < hex.length(); i+=2) {
std::string byteString = hex.substr(i, 2);
char byte = static_cast<char>(stoi(byteString, nullptr, 16));
bin += byte;
}
return bin;
}
char HexToByte(char c) {
if (c - '0' < 10) {
return c - '0';
} else {
return c - 'a' + 10;
}
}
std::string HexStringToBinary(const std::string& hex) {
std::string ret;
ret.reserve((hex.size() + 1) / 2);
size_t i = 0;
if (hex.size() % 2) {
ret += HexToByte(hex[i++]);
}
while (i < hex.size()) {
char c = HexToByte(hex[i++]);
c <<= 4;
c |= HexToByte(hex[i++]);
ret += c;
}
return ret;
}
int main() {
std::string result = "e99a18c428cb38d5f260853678922e03";
std::string binaryStr = hex2bin(result);
std::cout << binaryStr << std::endl;
std::string res = "\xE9\x9A\x18\xC4\x28\xCB\x38\xD5\xF2\x60\x85\x36\x78\x92\x2E\x03";
std::cout << res << std::endl;
std::string k = HexStringToBinary(result);
std::cout << k << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RkOjpzdHJpbmcgaGV4MmJpbihjb25zdCBzdGQ6OnN0cmluZyYgaGV4KSB7CiAgICBzdGQ6OnN0cmluZyBiaW47CiAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGhleC5sZW5ndGgoKTsgaSs9MikgewogICAgICAgIHN0ZDo6c3RyaW5nIGJ5dGVTdHJpbmcgPSBoZXguc3Vic3RyKGksIDIpOwogICAgICAgIGNoYXIgYnl0ZSA9IHN0YXRpY19jYXN0PGNoYXI+KHN0b2koYnl0ZVN0cmluZywgbnVsbHB0ciwgMTYpKTsKICAgICAgICBiaW4gKz0gYnl0ZTsKICAgIH0KICAgIHJldHVybiBiaW47Cn0KCmNoYXIgSGV4VG9CeXRlKGNoYXIgYykgewogIGlmIChjIC0gJzAnIDwgMTApIHsKICAgIHJldHVybiBjIC0gJzAnOwogIH0gZWxzZSB7CiAgICByZXR1cm4gYyAtICdhJyArIDEwOwogIH0KfQoKc3RkOjpzdHJpbmcgSGV4U3RyaW5nVG9CaW5hcnkoY29uc3Qgc3RkOjpzdHJpbmcmIGhleCkgewogIHN0ZDo6c3RyaW5nIHJldDsKICByZXQucmVzZXJ2ZSgoaGV4LnNpemUoKSArIDEpIC8gMik7CgogIHNpemVfdCBpID0gMDsKICBpZiAoaGV4LnNpemUoKSAlIDIpIHsKICAgIHJldCArPSBIZXhUb0J5dGUoaGV4W2krK10pOwogIH0KCiAgd2hpbGUgKGkgPCBoZXguc2l6ZSgpKSB7CiAgICBjaGFyIGMgPSBIZXhUb0J5dGUoaGV4W2krK10pOwogICAgYyA8PD0gNDsKICAgIGMgfD0gSGV4VG9CeXRlKGhleFtpKytdKTsKICAgIHJldCArPSBjOwogIH0KCiAgcmV0dXJuIHJldDsKfQoKaW50IG1haW4oKSB7CiAgICBzdGQ6OnN0cmluZyByZXN1bHQgPSAiZTk5YTE4YzQyOGNiMzhkNWYyNjA4NTM2Nzg5MjJlMDMiOwogICAgc3RkOjpzdHJpbmcgYmluYXJ5U3RyID0gaGV4MmJpbihyZXN1bHQpOwogICAgc3RkOjpjb3V0IDw8IGJpbmFyeVN0ciA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OnN0cmluZyByZXMgPSAiXHhFOVx4OUFceDE4XHhDNFx4MjhceENCXHgzOFx4RDVceEYyXHg2MFx4ODVceDM2XHg3OFx4OTJceDJFXHgwMyI7CiAgICBzdGQ6OmNvdXQgPDwgcmVzIDw8IHN0ZDo6ZW5kbDsKICAgIAogICAgc3RkOjpzdHJpbmcgayA9IEhleFN0cmluZ1RvQmluYXJ5KHJlc3VsdCk7CiAgICBzdGQ6OmNvdXQgPDwgayA8PCBzdGQ6OmVuZGw7CgogICAgcmV0dXJuIDA7Cn0=