Forum » Programiranje » Kodirni program ADFGX oz. ADFGVX
Kodirni program ADFGX oz. ADFGVX
Small_Hobit ::
Pozdravljeni!
Zanima me oz. bi prosil za pomoč pri pretvorbi tega C# programa v programski jezik C++. Na področju C# nisem ravno najbolj doma.
Zanima me oz. bi prosil za pomoč pri pretvorbi tega C# programa v programski jezik C++. Na področju C# nisem ravno najbolj doma.
extern "C" __declspec(dllexport)BSTR sifriraj(char* besedilo, int dolzinaBesedila, char matrika[6][6], char* geslo, int dolzinaGesla) { string zakodiranoBesedilo; int stevec = 0; for(int st = 0; st < dolzinaBesedila; st++) { besedilo[st] = tolower(besedilo[st]); if(besedilo[st]=='š') { besedilo[st]='s'; } else if(besedilo[st] == 'č') { besedilo[st] = 'c'; } else if(besedilo[st] == 'ž') { besedilo[st] = 'z'; } else if(besedilo[st] == 'j') { besedilo[st] = 'i'; } else if(besedilo[st] < 'a' || besedilo[st] > 'z') { for(int st1=st; st<dolzinaBesedila; st++) { besedilo[st1] = besedilo[st1 + 1]; } dolzinaBesedila--; } } stevec=0; for(int st = 0; st < dolzinaBesedila; st++) { for(int st1=1; st1<6; st1++) { for(int st2=1; st2<6; st2++) { if(besedilo[st] == matrika[st1][st2]) { zakodiranoBesedilo+=matrika[st1][0]; zakodiranoBesedilo+=matrika[0][st2]; break; } } } } stevec=zakodiranoBesedilo.length(); char tabela[1000][1000]; int vrstice[1000]; for(int st=0; st<dolzinaGesla; st++) { tabela[0][st]=geslo[st]; } for(int st = 0; st < stevec; st++) { int st1 = (st / dolzinaGesla) + 1; vrstice[st % dolzinaGesla]=st1; tabela[st1][st % dolzinaGesla]=zakodiranoBesedilo[st]; } int najvec=vrstice[0]; for (int prehod = 0; prehod < dolzinaGesla-1 ; prehod++) { for(int i = 0; i < dolzinaGesla-1; i++) { if (int(tabela[0][i]) > int(tabela[0][i + 1])) { for(int st=0; st <=najvec; st++) { char a = tabela[st][i]; tabela[st][i]=tabela[st][i+1]; tabela[st][i+1]=a; } int c=vrstice[i]; vrstice[i]=vrstice[i+1]; vrstice[i+1]=c; } } } stevec=0; for(int st=0; st < dolzinaGesla; st++) { for(int st1=1; st1<=vrstice[st];st1++) { zakodiranoBesedilo[stevec]=tabela[st1][st]; stevec++; } } int wslen = ::MultiByteToWideChar(CP_ACP, 0, zakodiranoBesedilo.data(), zakodiranoBesedilo.length(), NULL, 0); BSTR wsdata = ::SysAllocStringLen(NULL, wslen); ::MultiByteToWideChar(CP_ACP, 0, zakodiranoBesedilo.data(), zakodiranoBesedilo.length(), wsdata, wslen); return wsdata; }
Invictus ::
Pravzaprav je kar v C. Sam klice funkcij se zamenja, pa je ...
"Life is hard; it's even harder when you're stupid."
http://goo.gl/2YuS2x
http://goo.gl/2YuS2x
Small_Hobit ::
V bistvu program deluje, ko je program.cs dodan kot dinamična knjižnica dll v drug projekt.
Najbolj pa me zmede zadnji del. Tole, če mi lahko kdo razloži bi mi veliko pomagalo.
Najbolj pa me zmede zadnji del. Tole, če mi lahko kdo razloži bi mi veliko pomagalo.
int wslen = ::MultiByteToWideChar(CP_ACP, 0, zakodiranoBesedilo.data(), zakodiranoBesedilo.length(), NULL, 0); BSTR wsdata = ::SysAllocStringLen(NULL, wslen); ::MultiByteToWideChar(CP_ACP, 0, zakodiranoBesedilo.data(), zakodiranoBesedilo.length(), wsdata, wslen); return wsdata;
keworkian ::
wslen je da dobiš dolžino stringa da lahko alociraš, potem pa nakonc pretvoriš iz multibyte v wc.
Obscenities in B-Flat
Small_Hobit ::
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C++] Brisanje znaka iz stringaOddelek: Programiranje | 984 (887) | mm1992 |
» | branje iz datoteke c#Oddelek: Programiranje | 1648 (1377) | darkolord |
» | Branje binarne datoteke v polje znakov - C++Oddelek: Programiranje | 1801 (1669) | Tutankhamun |
» | Branje datoteke [C]Oddelek: Programiranje | 1124 (1053) | Glodko |
» | velike male besede c++Oddelek: Programiranje | 2584 (2200) | PoPon2 |