#include <iostream>
#include <sstream>
#include <string>
using namespace std;
char hextob(char ch)
{
if (ch >= '0' && ch <= '9') return ch + '0';
if (ch >= 'A' && ch <= 'F') return ch - 10 + 'A';
if (ch >= 'a' && ch <= 'f') return ch - 10 + 'a';
return 0;
}
template<typename T>
T hextot(char* hex)
{
T value = 0;
for (size_t i = 0; i < sizeof(T)*2; ++i)
value |= hextob(hex[i]) << (8*sizeof(T)-4*(i+1));
return value;
};
int main()
{
char str[2] = {'3','6'};
std::cout << hextot<int16_t>(str) << "\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKY2hhciBoZXh0b2IoY2hhciBjaCkKewogICAgaWYgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHJldHVybiBjaCArICcwJzsKICAgIGlmIChjaCA+PSAnQScgJiYgY2ggPD0gJ0YnKSByZXR1cm4gY2ggLSAxMCArICdBJzsKICAgIGlmIChjaCA+PSAnYScgJiYgY2ggPD0gJ2YnKSByZXR1cm4gY2ggLSAxMCArICdhJzsKICAgIHJldHVybiAwOwp9CnRlbXBsYXRlPHR5cGVuYW1lIFQ+ClQgaGV4dG90KGNoYXIqIGhleCkKewogICAgVCB2YWx1ZSA9IDA7CiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihUKSoyOyArK2kpCiAgICAgICAgdmFsdWUgfD0gaGV4dG9iKGhleFtpXSkgPDwgKDgqc2l6ZW9mKFQpLTQqKGkrMSkpOwogICAgcmV0dXJuIHZhbHVlOwp9OwoKaW50IG1haW4oKQp7CgpjaGFyIHN0clsyXSA9IHsnMycsJzYnfTsKICAgIHN0ZDo6Y291dCA8PCBoZXh0b3Q8aW50MTZfdD4oc3RyKSAgPDwgIlxuIjsKCn0KCg==