Здравствуйте, Figaro, Вы писали:
F>Теперь несколько вопросов:
F>1. Что эта хрень делает?
Преобразует строку. Какая то забавная символьная обфускация)))
F>2. Как понимать ord(AStr[j]) при нулевом j.
Это ошибка. Но ord(AStr[0]) возвратит всегда 0, т.к. в предшествующих 4 байтах не бывает огромных чисел.
F>3. Основное: как это будет выглядеть на C++?
Видимо так:
void Update(PCHAR AStr)
{
INT i, j, Len;
__int64 i64;
CHAR ch;
Len = lstrlenA(AStr);
for (i=1; i<=Len; i++) {
i64 = i;
for(j=1; j<=Len; j++) {
if (j<>i) i64 += (INT)AStr[j-1] * j;
while (i64 >= Len) {
i64 -= Len;
}
}
j = i64;
ch = AStr[j-1];
AStr[j-1] = AStr[i-1];
AStr[i-1] = ch;
}
}
Хотя, вроде, цикл while можно заменить на взятие модуля от Len.