|
#include<stdio.h>
#include<string.h>
//#include<conio.h>
char * HexToBin(const char *strHex,char *ret);
int main(int argc, char* argv[])
{
char hex[]="12AF";
char buff[16+1];
printf("\n%s -> %s",hex,HexToBin(hex,buff));
// while(kbhit()) getch(); getch();
return 0;
}
//---------------------------------------------------------------------------
//strHex: 문자열로 표현된 16진수의 숫자
//ret: 이진수로 변환된 결과를 저장(크기는 strlen(strHex)*4+1 이상이어야 함)
//반환값: 변환값이 저장된 번지(ret)
char * HexToBin(const char *strHex ,char *ret)
{
if(!strHex || !ret) return NULL;
static const char *const strBits1[]={"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001"};
static const char *const strBits2[]={"1010","1011","1100","1101","1110","1111"};
ret[0]='\0';
for(char ch ;*strHex ;++strHex)
{
ch=*strHex;
if(ch>='0' && ch<='9') strcat(ret,strBits1[ch-'0']);
else if(ch>='A' && ch<='F') strcat(ret,strBits2[ch-'A']);
else if(ch>='a' && ch<='f') strcat(ret,strBits2[ch-'a']);
else{
ret[0]='\0';
return NULL;
}
}
return ret;
}
1 님이 쓰신 글 :
: 제가 하려는건 16진수 16디지트를 입력받아서 ..
:
: 2진수54비트출력입니다...
:
: 밑에 반복문질문이라는 어설픈 질문을 했었는데여..ㅈㅅ해여 둘리님!
:
: 2진수로 표현...어느정도 길이까지는 문자를 a~z,,oa~oz~~~ 이런식으루
:
: 해봤는데여 54개는 무리였어여ㅜ.ㅡ 오류두나구여
:
: 바쁘시겠지만 어떤...함수이용? 이나 흰트라두 부탁드림니다...
|