티스토리 뷰

C언어

HEX_str_to_bin_with_space

바람사탕 2025. 3. 8. 22:36
반응형

공백이 포함된 HEX문자열을 바이너리로 변환하는 c함수

 

 

//"f6 b2 7f 94 bf 2e 9b 5a 54 b5 fe 2b 46 ff f1 ec 55 14 fe b1 "

int if_HEX_char__add(char a,unsigned long *bin)
{
	int bok=0;
	if(('0'<=a)&&(a<='9'))
	{
		*bin=(*bin<<4)|(a-'0');
		bok=1;
	}
	else if(('a'<=a)&&(a<='f'))
	{
		*bin=(*bin<<4)|(a-'a'+10);
		bok=1;
	}
	else if(('A'<=a)&&(a<='F'))
	{
		*bin=(*bin<<4)|(a-'A'+10);
		bok=1;
	}
	return bok;
}
int HEX_str_to_bin_with_space(const char *hex_str, unsigned char *bin_out,int bin_out_len)
{
	int blen=0;
	unsigned long a=0;
	const char *s=hex_str;
	while(*s)
	{
		if(blen>=bin_out_len)break;
		a=0;
		if(*s==' ')s++;
		if(*s==0)break;
		if(if_HEX_char__add(*s,&a))
		{
			s++;
			if(if_HEX_char__add(*s,&a))
			{
				s++;
			}
			else
			{
				s++;
			}
		}
		else
		{
			s++;
		}
		*bin_out=(unsigned char)(a&0xff);
		bin_out++;
		blen++;
	}
	return blen;
}
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함