Перевести код реализации XOR с C++ Builder - C (СИ)
Формулировка задачи:
Помогите перевести код с билдера в чистый Си
или на худой конец обычный хор
...
#include "math.h"
...
String strText;
...
void __fastcall TForm1::MathCrypt(void)
{
for (int i=1;i<=strText.Length();i++)
{
char mask=sin(i)*4000-cos(i)*250/20;
strText[i]=(strText[i] ^ mask);
}
}
...
MathCrypt();
...AnsiString XOR_Crypt(AnsiString in, AnsiString pass)
{
AnsiString out;
for (int x=1;x<in.Length()+1;x++)
{
out += (char)(in[x] ^ pass[x%pass.Length()+1]);
}
return out;
}Решение задачи: «Перевести код реализации XOR с C++ Builder»
textual
Листинг программы
char *strText;
void MathCrypt(void)
{
int i;
char mask;
for(i=0;i<strlen(strText);i=i+1);
{
mask=sin(i)*4000-cos(i)*250/20;
strText[i]=strText[i]^mask;
}
}
Объяснение кода листинга программы
- Объявлена переменная типа char* — strText, которая будет использоваться в функции MathCrypt.
- В функции MathCrypt объявлены две переменные типа int — i и mask.
- В цикле for переменной i присваивается значение 0, а условие цикла — i<strlen(strText).
- Выполняется приведение типа cos(i) и sin(i) к int.
- Переменная mask получает значение sin(i)4000-cos(i)250/20.
- При выполнении операции ^ (XOR) между strText[i] и mask, результат записывается в strText[i].
- Выполняется инкремент i на 1.
- Цикл for повторяется до тех пор, пока i меньше длины строки strText.
- В конце функции MathCrypt переменная strText остается неизменной.