#include <iostream>
#include <string>
#include <iomanip>
unsigned char hex2dec(const std::string &s, size_t pos)
{
char ch = s[pos];
if (ch >= 'A' && ch <= 'F')
return (ch - 'A') + 10;
if (ch >= 'a' && ch <= 'f')
return (ch - 'a') + 10;
if (ch >= '0' && ch <= '9')
return (ch - '0');
// error!
return 0;
}
unsigned char decodeHexByte(const std::string &s, size_t pos)
{
return (hex2dec(s, pos) << 4) | hex2dec(s, pos+1);
}
int main()
{
std::string keyInStr = "1314191A1B";
unsigned char keyInHex[5] = {};
for (int i = 0, j = 0; i < 5; ++i, j += 2)
{
keyInHex[i] = decodeHexByte(keyInStr, j);
std::cout << std::hex << std::setw(2) << std::setfill('0') << (int) keyInHex[i] << " ";
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8aW9tYW5pcD4KCnVuc2lnbmVkIGNoYXIgaGV4MmRlYyhjb25zdCBzdGQ6OnN0cmluZyAmcywgc2l6ZV90IHBvcykKewoJY2hhciBjaCA9IHNbcG9zXTsKCglpZiAoY2ggPj0gJ0EnICYmIGNoIDw9ICdGJykKCQlyZXR1cm4gKGNoIC0gJ0EnKSArIDEwOwoKCWlmIChjaCA+PSAnYScgJiYgY2ggPD0gJ2YnKQoJCXJldHVybiAoY2ggLSAnYScpICsgMTA7CgoJaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpCgkJcmV0dXJuIChjaCAtICcwJyk7CgoJLy8gZXJyb3IhCglyZXR1cm4gMDsKfQoKdW5zaWduZWQgY2hhciBkZWNvZGVIZXhCeXRlKGNvbnN0IHN0ZDo6c3RyaW5nICZzLCBzaXplX3QgcG9zKQp7CglyZXR1cm4gKGhleDJkZWMocywgcG9zKSA8PCA0KSB8IGhleDJkZWMocywgcG9zKzEpOwp9CgppbnQgbWFpbigpCnsKCXN0ZDo6c3RyaW5nIGtleUluU3RyID0gIjEzMTQxOTFBMUIiOwoJdW5zaWduZWQgY2hhciBrZXlJbkhleFs1XSA9IHt9OwoKCWZvciAoaW50IGkgPSAwLCBqID0gMDsgaSA8IDU7ICsraSwgaiArPSAyKQoJewogICAgCWtleUluSGV4W2ldID0gZGVjb2RlSGV4Qnl0ZShrZXlJblN0ciwgaik7CgkJc3RkOjpjb3V0IDw8IHN0ZDo6aGV4IDw8IHN0ZDo6c2V0dygyKSA8PCBzdGQ6OnNldGZpbGwoJzAnKSA8PCAoaW50KSBrZXlJbkhleFtpXSA8PCAiICI7CiAgIAl9CgoJcmV0dXJuIDA7Cn0=