/**
* Calcola l'esponenziale
*/
int esp( int n, int e ) {
int ris=1;
for(int c=0; c<e; c++)
ris *= n;
return ris;
}
/**
* Converte decimali in binario resituendo il risultato in un numero di tipo long
*/
long decToBin(int dec){
int k=0;
int binary=0;
int resto;
int tmp = 0;
while(dec!=0){
resto = dec%2;
dec = dec/2;
tmp = esp(10,k++)*resto;
binary += tmp;
}
return binary;
}
/**
* Converte decimali in binario resituendo il risultato in un array di caratteri
*/
char* decToBin(int dec){
int k=0;
char binary[80]="";
char binRes[]="";
while(dec!=0){
dec = binSeries(dec);
if(resto==1)
strcat(binary, "1");
else
strcat(binary, "0");
k++;
}
int i=0;
while(k>0)
binRes[i++] = binary[--k];
//printf("Binary: %s\n ", binRes);
char tmp[] = "";
strcpy(binRes, tmp);
return &tmp;
}
/**
* Converte binario in decimale
*/
int binToDec(long bin){
// 32 4 1
//char bin[80] = "100101";
int dec = 0;
int i=0;
int resto = 0;
while(bin!=0){
resto = bin%2;
bin = bin/2;
dec += (int)pow(2,i)*resto;
i++;
}
return dec;
}
/**
* Converte binario in decimale passandogli un array di caratteri
*/
int binToDec(char manch[]){
int dec = 0;
int len = strlen(manch);
int i=0;
while(len>=0){
if(manch[--len] =='1')
dec += pow(2,i);
i++;
}
printf("%d\n", dec);
}
/**
* Encode a decimal data in machester code
*/
int manchesterEncode(int dec){
//Convert dec to binary Manchester encoding
long manchester=0;
int resto;
long tmp = 0;
long a=0;
while(dec!=0){
resto = dec%2;
dec = dec/2;
tmp = esp(10,a+resto);
manchester += tmp;
a += 2;
}
// 32 4 1
//char bin[80] = "100101";
//Convert binary to decimal
dec = 0;
int i=0;
while(manchester!=0){
resto = manchester%10;
manchester = manchester/10;
dec += esp(2,i)*resto;
i++;
}
return dec;
}
/**
* Encode a decimal data in machester code whith us of Strings
*/
int manchesterEncode(int dec){
int k=0;
char binary[80]="";
char binRes[]="";
int resto =0;
while(dec!=0){
resto = dec%2;
dec = dec/2;
if(resto==1)
strcat(binary, "01");
else
strcat(binary, "10");
k++;
printf("Binary: %s\n ", binary);
}
int i=0;
k--;k--;
while(k>0)
binRes[i++] = binary[--k];
//Convert manchester binary to decimal
printf("Binary R: %s\n ", binRes);
dec = 0;
int len = strlen(binRes);
i=0;
while(len>=0){
if(binRes[--len] =='1')
dec += pow(2,i);
i++;
}
return dec;
}
/**
* Esempio di Main
*/
int main(){
char manch[80] = "100101";
binToDec(manch);
return (EXIT_SUCCESS);
}