#include <stdio.h>
int fromHex(char c)
{
if (c >= '0' && c <= '9')
return c - '0';
if (c >= 'a' && c <= 'f')
return 10 + (c - 'a');
if (c >= 'A' && c <= 'F')
return 10 + (c - 'A');
return -1; // unexpected char
}
int main()
{
char a[] = "b159";
int inHex[3];
inHex[0] = fromHex(a[0]);
inHex[1] = fromHex(a[1]) * 16 + fromHex(a[2]);
inHex[2] = fromHex(a[3]);
printf("%d %d %d\n", inHex[0], inHex[1], inHex[2]);
printf("0x%x 0x%x 0x%x\n", inHex[0], inHex[1], inHex[2]);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgZnJvbUhleChjaGFyIGMpCnsKICAgIGlmIChjID49ICcwJyAmJiBjIDw9ICc5JykKICAgICAgICByZXR1cm4gYyAtICcwJzsKICAgIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykKICAgICAgICByZXR1cm4gMTAgKyAoYyAtICdhJyk7CiAgICBpZiAoYyA+PSAnQScgJiYgYyA8PSAnRicpCiAgICAgICAgcmV0dXJuIDEwICsgKGMgLSAnQScpOwogICAgcmV0dXJuIC0xOyAvLyB1bmV4cGVjdGVkIGNoYXIKfQoKaW50IG1haW4oKQp7CiAgICBjaGFyIGFbXSA9ICJiMTU5IjsKICAgIGludCBpbkhleFszXTsKICAgIGluSGV4WzBdID0gZnJvbUhleChhWzBdKTsKICAgIGluSGV4WzFdID0gZnJvbUhleChhWzFdKSAqIDE2ICsgZnJvbUhleChhWzJdKTsKICAgIGluSGV4WzJdID0gZnJvbUhleChhWzNdKTsKICAgIHByaW50ZigiJWQgJWQgJWRcbiIsIGluSGV4WzBdLCBpbkhleFsxXSwgaW5IZXhbMl0pOwogICAgcHJpbnRmKCIweCV4IDB4JXggMHgleFxuIiwgaW5IZXhbMF0sIGluSGV4WzFdLCBpbkhleFsyXSk7Cn0K