ik ben bezig met een prog wat een XOR uitvoert op een encrypted string(binair) met een key(ook binair). Het resultaat is de 3de binair. Nu moet het resultaat worden omgezet in een decimaal, zodat ik daarna daarmee verder kan gaan om het naar ASCII om te zetten. Nu heb ik het volgende(sorry voor de lay-out verneuking )
Code:
//output:
//01110100011010000110010100100000011100000110000101110011011100110111011101101111011100100110010000100000011010010111001100100000011000100110100101101110
#include <iostream>
#include <stdlib.h>
using namespace std;
int macht(int);
int main(void)
{
unsigned int edata[152] = {1,0,0,1,0,0,1,1,0,0,1,0,1,0,0,1,1,0,0,1,0,1,0,0,1,0,0,0,0,1,1,0,1,0,1,0,0,1,0,1,0,0,0,1,0,1,0,1,1,0,1,0,0,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,0,1,0,0,1,0,1,0,1,0,1,1,0,0,0,1,1,1,1,0,0,1,1,0,1,0,0,1,1,1,0,1,0,1,1,0,1,0,0,1,0,1,0,1,0,1,1,0,1,0,0,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,1,0,1,0,1,1,1,0,1,0,1,1,0,1,0};
unsigned int key[152] = {1,1,1,0,0,1,1,1,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,1,1,0,1,0,0,1,1,0,1,1,0,1,0,1,0,1,0,1,1,1,0,1,0,0,1,1,0,1,0,1,0,0,0,0,1,0,0,1,1,0,0,0,1,0,0,0,0,1,1,1,1,1,1,0,1,0,0,0,0,1,0,0,0,1,1,0,1,0,1,0,0,1,0,0,0,1,1,0,1,0,1,0,1,1,1,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,1,0,0,0,1,1,0,0,1,1,0,0,1,0,1,1,1,1,1,0,0,0,1,1,0,1,0,0};
unsigned int data[152];
for(int i=0;i<152;i++)
{
if(edata[i]==key[i])
data[i]=0;
else
data[i]=1;
cout<<data[i];
}
unsigned int decimaal;
unsigned int sum;
for(int i=151; i<=0; i--)
{
decimaal=data[i]*macht(i);
sum += decimaal;
}
cout<<endl<<endl<<sum<<endl<<endl;
system("pause");
return 0;
}
int macht(int i)
{
int result=1;
i = 151 - i;
for(int j=1;j<=i;j++)
{
result *= 2;
}
return result;
}
Voor degene die niet weten hoe je een binair om kan zetten in een decimaal; het gaat als volgt. Stel je hebt het binaire getal 11010
Dat is dus de decimaal voor 11010. Nu moet ik heel de output opgeslagenin de array data als decimaal getal in sum hebben. Als ik dit zo uitvoer krijg ik 0, volgensmij gaat het fout op het moment dat ik de functie macht aanroep, of in de functie zelf.