Перевести код кодировки с Delphi - C#
Формулировка задачи:
Здравствуйте.
Вот код кодировки написанный на delphi
Вот попытка перевести его в c#
Нужно добавить в конец строки закодированный символ.
Помогите пожалуйста.
Function Cript(Source:WideString):WideString;
var i:Integer;
hashTab:array [1..9] of integer;
Key:Integer;
symb:Char;[CSHARP][/CSHARP]
begin
Cript:='';key:=1;symb:=#0;
hashTab[1]:=-3;hashTab[2]:=1;hashTab[3]:=8;
hashTab[4]:=4;hashTab[5]:=6;hashTab[6]:=-7;
hashTab[7]:=-2;hashTab[8]:=-5;hashTab[9]:=11;
for i:=1 to length(Source) do
begin
inc(key);
if (key/2) = (key div 2) then symb:=chr(ord(Source[i])+hashtab[key]);
if (key/3) = (key div 3) then symb:=chr(ord(Source[i])+hashtab[key]);
if (key/4) = (key div 4) then symb:=chr(ord(Source[i])+hashtab[key]);
if (key/5) = (key div 5) then symb:=chr(ord(Source[i])+hashtab[key]);
if (key/6) = (key div 6) then symb:=chr(ord(Source[i])+hashtab[key]);
if (key/7) = (key div 7) then symb:=chr(ord(Source[i])+hashtab[key]);
if (key/8) = (key div 8) then symb:=chr(ord(Source[i])+hashtab[key]);
if (key/9) = (key div 9) then symb:=chr(ord(Source[i])+hashtab[key]);
if key>=9 then key:=1;
result:=result+symb;
end;
end;public string DeCript(string textcript)
{
int i, li;
int key = 1;
int[] hashTab = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};
float key1 = 1.0F;
char symb = '\0';
string s = "";
hashTab[1] = - 3;
hashTab[2] = 1;
hashTab[3] = 8;
hashTab[4] = - 44;
hashTab[5] = 6;
hashTab[6] = -7;
hashTab[7] = -2;
hashTab[8] = -5;
hashTab[9] = 11;
li = textcript.Length;
for (i = 1; i < li; i++)
{
key++;
key1++;
if (key1 / 2 == key / 2)
symb = Convert.ToChar(Convert.ToByte(textcript[i] + hashTab[key]));
if (key1 / 3 == key / 3)
symb = Convert.ToChar(Convert.ToByte(textcript[i] + hashTab[key]));
if (key1 / 4 == key / 4)
symb = Convert.ToChar(Convert.ToByte(textcript[i] + hashTab[key]));
if (key1 / 5 == key / 5)
symb = Convert.ToChar(Convert.ToByte(textcript[i] + hashTab[key]));
if (key1 / 6 == key / 6)
symb = Convert.ToChar(Convert.ToByte(textcript[i] + hashTab[key]));
if (key1 / 7 == key / 7)
symb = Convert.ToChar(Convert.ToByte(textcript[i] + hashTab[key]));
if (key1 / 8 == key / 8)
symb = Convert.ToChar(Convert.ToByte(textcript[i] + hashTab[key]));
if (key1 / 9 == key / 9)
symb = Convert.ToChar(Convert.ToByte(textcript[i] + hashTab[key]));
if (key >= 9)
{
key1 = 1.0F;
key = 1;
}
s.Insert(s.Length + 1, symb.ToString);
}
}Решение задачи: «Перевести код кодировки с Delphi»
textual
Листинг программы
sbyte[] SetCode(string s)
{
int i = 0;
int i1, i2;
while ((s.IndexOf(":") >= 0)&&(s.IndexOf(";") >= 0))
{
i++;
i1 = s.IndexOf(":");
i2 = s.IndexOf(";");
sbyte[] bufkey = new sbyte [i];
bufkey[i] = Convert.ToSByte(s.Substring(i1+1, i2-i1));
}
}