#include <stdio.h>
#include <string.h>
void htoi(const char *ptr, char *binAddr) {
char value[32] = "";
char ch = *ptr;
int i;
const char* quads[] = {"0000", "0001", "0010", "0011", "0100", "0101",
"0110", "0111", "1000", "1001", "1010", "1011",
"1100", "1101", "1110", "1111"};
while (ch == ' ' || ch == '\t')
ch = *(++ptr);
for (i = 0; i < 8; i++) {
if (ch >= '0' && ch <= '9')
strncat(value
, quads
[ch
- '0'], 4); if (ch >= 'A' && ch <= 'F')
strncat(value
, quads
[10 + ch
- 'A'], 4); if (ch >= 'a' && ch <= 'f')
strncat(value
, quads
[10 + ch
- 'a'], 4);
ch = *(++ptr);
}
*binAddr = *value;
}
main()
{
char line[11], binAddr[32];
char *hexAddr="0x35";
htoi(hexAddr, binAddr);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4Kdm9pZCBodG9pKGNvbnN0IGNoYXIgKnB0ciwgY2hhciAqYmluQWRkcikgewpjaGFyIHZhbHVlWzMyXSA9ICIiOwpjaGFyIGNoID0gKnB0cjsKaW50IGk7CmNvbnN0IGNoYXIqIHF1YWRzW10gPSB7IjAwMDAiLCAiMDAwMSIsICIwMDEwIiwgIjAwMTEiLCAiMDEwMCIsICIwMTAxIiwKICAgICAgICAgICAgICAgICAgICAgIjAxMTAiLCAiMDExMSIsICIxMDAwIiwgIjEwMDEiLCAiMTAxMCIsICIxMDExIiwKICAgICAgICAgICAgICAgICAgICAgIjExMDAiLCAiMTEwMSIsICIxMTEwIiwgIjExMTEifTsKCndoaWxlIChjaCA9PSAnICcgfHwgY2ggPT0gJ1x0JykKICAgIGNoID0gKigrK3B0cik7Cgpmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CiAgICBpZiAoY2ggPj0gJzAnICYmIGNoIDw9ICc5JykKICAgICAgICBzdHJuY2F0KHZhbHVlLCBxdWFkc1tjaCAtICcwJ10sIDQpOwogICAgaWYgKGNoID49ICdBJyAmJiBjaCA8PSAnRicpCiAgICAgICAgc3RybmNhdCh2YWx1ZSwgcXVhZHNbMTAgKyBjaCAtICdBJ10sIDQpOwogICAgaWYgKGNoID49ICdhJyAmJiBjaCA8PSAnZicpCiAgICAgICAgc3RybmNhdCh2YWx1ZSwgcXVhZHNbMTAgKyBjaCAtICdhJ10sIDQpOwoKICAgIGNoID0gKigrK3B0cik7Cgp9CiAgICBwcmludGYoIiVzXG4iLCB2YWx1ZSk7CipiaW5BZGRyID0gKnZhbHVlOwp9CgoKbWFpbigpCnsKY2hhciBsaW5lWzExXSwgIGJpbkFkZHJbMzJdOwpjaGFyICpoZXhBZGRyPSIweDM1IjsKaHRvaShoZXhBZGRyLCBiaW5BZGRyKTsKCn0=