#include <string.h>
#include <stdio.h>
#include <iostream>
using namespace std;
char *ascii2binary(char *input,char *dst)
{
unsigned char bit;
char *start = dst;
for (int i = 0; i < strlen(input); i++) {
for ( bit = 1 << (8 - 1); bit; bit >>= 1 )
{
*dst++ = input[i] & bit ? '1' : '0';
}
}
*dst = '\0';
return start;
}//ascii2binary
unsigned long binaryToDecimal(char *binary, int length)
{
int i;
unsigned long decimal = 0;
unsigned long weight = 1;
binary += length - 1;
weight = 1;
for(i = 0; i < length; ++i, --binary)
{
if(*binary == '1')
decimal += weight;
weight *= 2;
}
return decimal;
}
void binary2ascii(char *binary, char *outchar)
{
int binaryLength = strlen(binary);
int symbolCount = binaryLength / 8 + 1;
int i;
for(i = 0; i < binaryLength; i+=8, binary += 8)
{
char *byte = binary;
byte[8] = '\0';
*outchar++ = binaryToDecimal(byte, 8);
}
outchar -= symbolCount;
}//binary2ascii
int main () {
char a[]="DKMAHAnAOmzjgLdANONzKgOzKon@OInAMKnALIzLDzn@OzANOInAnazLDzAnmzjOOgIzn@OzHAICxzKINzNOnOgEAIKnALIzf@OIzKzHAICzAmzDoIMnALIAIFzjgLjLAInunLu?LAInzHAICmznOINznLzO`KMOgGKnOzEKIazjgLGHOEmzfAoggOInzDKEAHazLDzIOnfLgCzjgLnLMLHmyzOIdAgLIEOInmxzAmzOmjOMAKHHazNADDAMoHnzLdOgzMAgMoAnumfAnM@ONjLAInunLujLAInzHAICmzpmoM@zKmzNAKHuojzELNOEzmOgdOgmqyzz?@OmO?nzAmzAInOINONzn@Knz???zHAICmzGOzOKmaznLzMLIDAFogOyzz?azNOmAFIzz?@AmzmOHDuMLIDAFogKnALIzAmzAEjHOEOInONzn@gLoF@zKIzO`nOImAGHOLjnALIzIOFLnAKnALIzEOM@KIAmExzf@OgOAIzOKM@zOINzLDzn@OzHAICNOmMgAGOmznLzn@OzLn@OgzAnmzMKjKGAHAnAOmzKINzgOkoAgOEOInmy?Hn@LoF@zn@OzLjnALIzIOFLnAKnALIzEOM@KIAmEzNOmMgAGONzAIzn@AmNLMoEOInzAmzmjOMADAONzAIznOgEmzLDzn@Oz?AICz?LIngLHz?gLnLMLHzp???qxn@OzmKEOzDKMAHAnAOmzKgOzNOmAFIONznLzGOzomONzGazLn@OgzMLIngLHjKMCOnzzzz?@OzGKmAMzoIAnzLDzOIMKjmoHKnALIxzf@AM@zAmzjKmmONzKMgLmmzn@OzzzLgNOgznLzOmnKGHAm@zMLEEoIAMKnALImzLdOgzKzjLAInunLujLAInz@Oz???zHAICz????zDAgmnzmOINz???zjKMCOnmznLzMLIDAFogOzKIxz???z????zmOINz???zjKMCOnmznLzM@LLmOzKINzMLIDAaOgzjgLnLMLHmyzz?IMOzOKM@zLDzn@Oz";
cout << "original:\n" << a << "\nSIZE:" << strlen(a) << endl;
char *b = new char [ (strlen(a) * 8) + 1 ];
ascii2binary(a,b);
cout << "ascii2binary:\n" << b << "\nSIZE:" << strlen(b) << endl;
char *c = new char [ (strlen(b)/8) + 1 ];
binary2ascii(b,c);
cout << "binary2ascii:\n" << c << "\nSIZE:" << strlen(c) << endl;
delete [] b;
delete [] c;
}//main
compile on FreeBSD:
g++ filename.cpp
By: Mehdi Sadighian
Contact: mehdi.sadighian@hotmail.com
TAG: C, C++, binary to ASCII,ASCII to binary, char array,converter,convertion