Solved

Yet another Pascal to C#

Posted on 2006-10-19
2
1,072 Views
Last Modified: 2011-09-20
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;
0
Comment
Question by:valvet
2 Comments
 
LVL 28

Accepted Solution

by:
ciuly earned 500 total points
ID: 17764205
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;
        }
0
 

Author Comment

by:valvet
ID: 17764242
Excellent job.

Workes like a charm.
0

Featured Post

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

Suggested Solutions

The uses clause is one of those things that just tends to grow and grow. Most of the time this is in the main form, as it's from this form that all others are called. If you have a big application (including many forms), the uses clause in the in…
Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now