/*============================================================================
Name : Exercise.cpp
Author : Haier
Version : 1.01
Copyright : Copyright (c) 2014
Description : wchar_t Conver program in C, Ansi-style, Compile by Code:Block
============================================================================*/
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
wchar_t * bitstr_to_str(wchar_t *buf)
{
int i=0, j=0;
int bitpos=0;
int bits[8] = { 128, 64, 32, 16, 8, 4, 2, 1 };
wchar_t *out = (wchar_t *)calloc(80, sizeof(wchar_t));
while(buf[i])
{
switch (buf[i])
{
case '1':
case '0':
out[j] += atoi((const char *)&buf[i])*bits[bitpos];
bitpos++;
if (8==bitpos)
{
bitpos = 0;
j++;
}
break;
default:
break;
}
i++;
}
out[j+1]='\0';
return out;
}
char *StrToBit(wchar_t *Buf)
{
char *OutString=(char*)malloc(9*80*sizeof(char));
int Bit[8] ={128,64,32,16,8,4,2,1};
int i,j,Temp;
for(i=0; Buf[i]; i++)
{
Temp=(int)Buf[i];
for(j=0; j<8; j++)
{
if(Temp-Bit[j]>0)
{
OutString[j+i*9]='1';
Temp-=Bit[j];
}
else
{
OutString[j+i*9]='0';
}
}
OutString[8+i*9]=' ';
}
OutString[i*9]='\0';
return OutString;
}
int main()
{
wchar_t *Buffer=L"Hello";
printf("%ls\n",StrToBit(Buffer));
printf("%ls\n",bitstr_to_str(Buffer));
}