입력받은 문자열 중 각 문자의 아스키코드에 해당하는 값을 2진수 문자열로 바꾸고 싶단 말인가?

그렇다면 itoa 와 유사한데, 1바이트에 해당하는 8비트의 빈 곳을 0으로 채우고 싶다면 itoa 가 적합하지 않아.


char를 2진수 문자열로 만드는 함수를 하나 만들지.


char* c2b0(char value, char* string)

{

unsigned int v = (unsigned int)value;

for(int i = 7; i >= 0; --i, v >>= 1)

string[i] = (v & 1) + '0';

string[8] = 0;

return string;


이제 가져다 써보자.


char merge_string[256] = {0, };

char temp_string[256];

char input_string[256];

scanf("%s", input_string);

int len = strlen(input_string);

for(int i = 0; i < len; ++i)

{

    strcat(merge_string, c2b0(input_string[i], temp_string));

    strcat(merge_string, " ");

}

puts(merge_string);


뭐 이러면 되겠지?