# Yet another Pascal to C#

on
ciuly: You might remember our byte array from the other post, 'a'. This is what's being used here.

function deb(b:string):string;
var base: string;
i, r, j: integer;
b1, b2, b3, b4: byte;
i1, i2, i3: byte;
begin

i := 1;
while i+4<Length(b) do begin

b1 := a[ord(b[i])-20];
b2 := a[ord(b[i+1])-20];
b3 := a[ord(b[i+2])-20];
b4 := a[ord(b[i+3])-20];

i1 := (b1 shl 2)or(b2 shr 4);
i2 := ((b2 and \$f) shl 4)or(b3 shr 2);
i3 := ((b3 and 3) shl 6)or(b4);

//if i1*i2*i3<>0 then
result := result + {'>'+}chr(i1)+chr(i2)+chr(i3);
//result := result +
//'|'+ int2str(i1)+','+ int2str(i2)+','+ int2str(i3)+
//'('+int2str(b1)+','+ int2str(b2)+','+ int2str(b3)+','+int2str(b4)+')';

inc(i,4);
end;
end;
Comment
Watch Question

Do more with

EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Top Expert 2007
Commented:
this should be it:

public string deb(byte[] a, string b)
{
string result = "";
byte b1,b2,b3,b4;
int i = 1, i1,i2,i3;
while (i+4 < b.Length)
{
b1 = a[b[i-1]-20];
b2 = a[b[i]-20];
b3 = a[b[i+1]-20];
b4 = a[b[i+2]-20];

i1 = (b1 << 2) | (b2 >> 4);
i2 = ((b2 & 0xf) << 4) | (b3 >> 2);
i3 = ((b3 & 3) << 6) | b4;

result = result + /*'>'+*/Convert.ToChar(i1)+Convert.ToChar(i2)+Convert.ToChar(i3);
i = i+4;
}
return result;
}

Commented:
Excellent job.

Workes like a charm.

Do more with