ファイルから読み取った16進数の文字列をバイナリ形式(数値)に変換する方法
メモ
16進数のテキスト文字で書かれたファイルを読み込んで、
バイナリデータに変換する必要があったので、適当に作ってみた関数。
0xFF形式のみ、拾い上げて、数値に変更するだけ。
char* my_strcpy(const char* str) { char* p = (char*)malloc(strlen(str)+1); if(p == NULL) return NULL; strcpy(p,str); return p; } void str2hex(char* str) { unsigned int ui; char *s = my_strcpy(str); char *h = s; char *p = str; unsigned char us[5] = {0,0,0,0,0}; for (; s[0] != '\0'; s++){ if (strlen(s) >= 4) { if ( s[0] == '0' && toupper(s[1]) == 'X' && isxdigit(s[2]) && isxdigit(s[3]) ) { memcpy(us, s, 4); p[0] = strtol(us, NULL, 16); s += 3; p++; } } } p[0]='\0'; free(h); }