HEX 2 BIN

Задали вопрос на ачатике, как перевести строку вида "315c4eeaa8b5f8aaf9174145bf43e1784b8fa00dc71d885a80 4e5ee9fa40b16349c146fb778cdf2d3aff021dfff5b403b5" в число.

Время ночь, в голове задача написать минимально извращенный код на Си, хотя опытные программисты под Windows могут оправить курить MSDN - CryptStringToBinary, но ведь без велосипеда не интересно.
#define BYTE(l,h)           (((l)<<4)|((h)&0xFF))
int hex2bin(char *hex, char *bin) {
 char *p=hex;
 int size=0;

 while(*p) *(p++) -= (*p > 0x40) ? 0x57 : 0x30;
 do bin[size++] = BYTE( *hex++, *++hex ); while(hex < p);

 return size;
}
blog comments powered by Disqus
сюда туда