?
Danke sehr finix!
Jetzt bin ich der Sache schon etwas näher gekommen.
Zumindest hab ich jetzt mal nen C++ Code der sich auch kompilieren lässt.
Dieser tut jedoch noch nicht, was er eigentlich tun sollte (also genau das was der Java Code macht).
Es wäre sehr nett wenn jemand den Code korrigieren könnte, da ich jetzt so ziemlich am Ende bin und einfach nicht mehr weiter komme :(.
Ich schätze mal die Fehler liegen irgendwo bei den bitsets . Die Kommentare stellen den orginal Java Code der an dieser Stelle war dar.
#include <windows.h>
#include <iostream>
#include <bitset>
using namespace std;
bitset<64> a(bitset<64> bitset0) //private BitSet a(BitSet bitset)
{
bitset<64> bitset1; //BitSet bitset1 = new BitSet(64);
bool flag = false; //boolean flag = false;
for(int i1 = 0; i1 < 64; i1++)
{
if(flag != bitset0.at(i1)) //if(flag != bitset.get(i1))
bitset1.set(i1);
flag = bitset0.at(i1); //flag = bitset.get(i1);
}
return bitset1;
}
bitset<64> a(char ac[]) //private BitSet a(char ac[])
{
int i1 = strlen(ac) * 8;
bitset<sizeof(ac) * 8 *2> bitset0; //BitSet bitset = new BitSet(i1);
for(int j1 = 0; j1 < i1; j1++)
{
int k1 = j1 & 7;
int l1 = j1 >> 3;
if((ac[l1] & 0xff & 1 << 7 - k1) != 0)
bitset0.set(j1);
}
return bitset0;
}
char* a(bitset<64> bitset0, int i1) //private char[] a(BitSet bitset, int i1)
{
int j1 = i1 * 8;
char* ac = new char[i1]; //char ac[] = new char[i1];
for(int k1 = 0; k1 < j1; k1++)
{
int l1 = k1 & 7;
int i2 = k1 >> 3;
if(bitset0.at(k1)) //if(bitset.get(k1))
ac[i2] = (char)(ac[i2] | 1 << 7 - l1);
}
return ac;
}
char* DoThis(char* s1) //private void DoThis(String s1)
{
bool flag = false; //boolean flag = false;
char* as[] = { "MNfw9809", "90981qFS", "412.Fdq.", "..13fS4.", "41!!vs%&" }; //String as[] = ...
//StringTokenizer stringtokenizer = new StringTokenizer(s1 + "#", "#");
bitset<64> bitset0; //BitSet bitset = new BitSet(64);
for(int i1 = 0; i1 < 5; i1++)
{
bitset<64> bitset1 = a(as[i1]); //BitSet bitset1 = a(as[i1].toCharArray());
int j1 = atoi(strtok(s1, "#")); //int j1 = Integer.parseInt(stringtokenizer.nextToken());
for(int l1 = 0; l1 < j1; l1++)
bitset1 = a(bitset1);
bitset0 ^= bitset1; //bitset.xor(bitset1);
}
char* ac = a(bitset0, 8); //char ac[] = a(bitset, 8);
for(int k1 = 0; k1 < 8; k1++)
if(ac[k1] == 0 || ac[k1] == '\n' || ac[k1] == '\r')
ac[k1] = (char)(ac[k1] | 0x80);
char* RE = "~b#13#"; //send("~b#" + 13 + "#");
for(int i2 = 0; i2 < strlen(ac); i2++)
RE += (byte)(ac[i2] & 0xff); //out.write((byte)(ac[i2] & 0xff));
RE += '\n'; //send("\n");
//out.flush();
return RE;
}
int main(int argc, char* argv[])
{
cout << DoThis("23#57#26#50#48#");
// Sollte jetzt theoretisch "~b#13#{....|÷#" ausgeben
/*
Ansonsten hab ich noch folgende Beispiele:
35#57#33#33#50# ~b#13#z³zÔ.µÙ.
56#25#59#26#24# ~b#13#\..é8B)D
49#47#53#44#43# ~b#13#`dC.±Ž.S
So sollten dann normalerweise die Rückgabewerte von DoThis(...) bei den jeweiligen Parametern aussehen
*/
return 0;
}