i am a students, i am transform a
code about lz77 decompression in c# from JSCRIPT
this is my c# code
public class lz77DeCompression
{
    private char ReferencePrefix;
    private int ReferencePrefixCode;
    private int ReferenceIntBase;
    private int ReferenceIntFloorCode;
    private int ReferenceIntCeilCode;
    private int MaxStringDistance;
    private int MinStringLength;
    private int MaxStringLength;
    private int MaxWindowLength;
    public lz77DeCompression()
    {
        this.ReferencePrefix ='`';
        this.ReferencePrefixCode =
(int)this.ReferencePrefix;
        this.ReferenceIntBase = 96;
        this.ReferenceIntFloorCode =(int)'
';
        this.ReferenceIntCeilCode =
this.ReferenceIntFloorCode + this.ReferenceIntBase -1;
        this.MaxStringDistance =
(int)Math.Pow(this.ReferenceIntBase ,2)-1;
        this.MinStringLength = 5;
        this.MaxStringLength =
(int)Math.Pow(this.ReferenceIntBase, 1) - 1 + this.MinStringLength;
        this.MaxWindowLength = this.MaxStringDistance
+ this.MinStringLength;
    }
    
    private int decodeReferenceInt(string words, int width)
    {
       int value;
       int i;
       int charcode;
       value = 0;
       
       for (i = 0; i < width;i++ )
       {
           value *=
this.ReferenceIntBase;
           charcode =
(int)words[i];
          
              
if ((charcode >= this.ReferenceIntFloorCode) && (charcode <=
this.ReferenceIntCeilCode))
              
{
                  
value += charcode - this.ReferenceIntFloorCode;
              
}
       
        
          /* else
           {
              
Response.Write ( "<script
type=\"javascript\">alert("+
charcode+")<//script>");
           }*/
       }
       return value;
    }
    private int decodeReferenceInt(char words, int width)
    {
        int value;
        int i;
        int charcode;
        value = 0;
        for (i = 0; i < width; i++)
        {
            value *=
this.ReferenceIntBase;
            charcode =
(int)words;
            if
((charcode >= this.ReferenceIntFloorCode) && (charcode <=
this.ReferenceIntCeilCode))
            {
               
value += charcode - this.ReferenceIntFloorCode;
            }
            /* else
             {
                
Response.Write ( "<script type=\"javascript\">alert("+
charcode+")<//script>");
             }*/
        }
        return value;
    }
    
    private int decodeReferenceLength(char words)
    {
        return decodeReferenceInt(words, 1)
+ this.MinStringLength;
    }
    
    public string decompress(string words)
    {
        string decompressed;
        int pos,distance,length;
        int getSubString;
        char currentChar;
        char nextChar;
        decompressed ="";
        pos = 0;
        while (pos < words.Length)
        {
            currentChar
= words[pos];
            if
(currentChar!=this.ReferencePrefix)
            {
               
decompressed += currentChar;
               
pos++;
            }
            else
            {
               
nextChar = words[pos + 1];
               
if (nextChar != this.ReferencePrefix)
               
{
                   
distance = decodeReferenceInt(words.Substring(pos + 1, 2), 2);
                   
length = decodeReferenceLength (words[pos+3]);
                   
getSubString=decompressed.Length - distance - length;
                   
decompressed += decompressed.Substring(getSubString, length);
                   
pos += this.MinStringLength - 1;
               
}
               
else
               
{
                   
decompressed += this.ReferencePrefix;
                   
pos += 2;
               
}
            }
        }
        return decompressed;
    }
}
and this the JSCRIPT code 
//lz77 class
ReferencePrefix = "`";
ReferencePrefixCode = ReferencePrefix.charCodeAt(0);
ReferenceIntBase = 96;
ReferenceIntFloorCode = " ".charCodeAt(0);
ReferenceIntCeilCode = ReferenceIntFloorCode + ReferenceIntBase - 1;
MaxStringDistance = Math.pow(ReferenceIntBase, 2) - 1;
MinStringLength = 5;
MaxStringLength = Math.pow(ReferenceIntBase, 1) - 1 + MinStringLength;
MaxWindowLength = MaxStringDistance + MinStringLength;
function decodeReferenceInt(data, width) {
  var value = 0;
  for (var i = 0; i < width; i++) {
    value *= ReferenceIntBase;
    var charCode = data.charCodeAt(i);
    if ((charCode >= ReferenceIntFloorCode) &&
(charCode <= ReferenceIntCeilCode)) {
      value += charCode - ReferenceIntFloorCode;
    } else {
      throw "Invalid char code in reference int:
" + charCode;
    }
  }
  return value;
}
function decodeReferenceLength(data) {
  return decodeReferenceInt(data, 1) + MinStringLength;
}
function decompress(data) {
  var decompressed = "";
  var pos = 0;
  while (pos < data.length) {
    var currentChar = data.charAt(pos);
    if (currentChar != ReferencePrefix) {
      decompressed += currentChar;
      pos++;
    } else {
      var nextChar = data.charAt(pos + 1);
      if (nextChar != ReferencePrefix) {
        var distance =
decodeReferenceInt(data.substr(pos + 1, 2), 2);
        var length = decodeReferenceLength(data.charAt(pos
+ 3));
        decompressed +=
decompressed.substr(decompressed.length - distance - length, length);
        pos += MinStringLength - 1;
      } else {
        decompressed += ReferencePrefix;
        pos += 2;
      }
    }
  }
  return decompressed;
}
//end class
when i
give input input in c# code
input : 
I'm just a little bit caught in the middle
Life is a maze and lov` ,"r` >!I don't know where to go I can't do it
alone I've tried
And I don't know why
then the output :
I'm just a little bit caught in the middle
Life is a maze and love is a rddle
I don't know where to go I can't do it alone I've tried
And I don't know why
when i input in jscript
input :
I'm just a little bit caught in the middle
Life is a maze and lov` ,"r` >!I don't know where to go I can't do it
alone I've tried
And I don't know why
then the output
output:
I'm just a little bit caught in the middle
Life is a maze and love is a riddle
I don't know where to go I can't do it alone I've tried
And I don't know why
the right output is in JSCRIPT, in c# there is missing one character
but when i try differen input :
in c#
input :
I'm just a little bit caught in the middle Life is a maze and lov` ,"r`
>!I don't know where to go I can't do it alone I've tried And I don't know
why
output :
I'm just a little bit caught in the middle Life is a maze and love is a riddle
I don't know where to go I can't do it alone I've tried And I don't know why
in JSCRIPT
input :
I'm just a little bit caught in the middle Life is a maze and lov` ,"r`
>!I don't know where to go I can't do it alone I've tried And I don't know
why
output :
I'm just a little bit caught in the middle Life is a maze and love is a riddle
I don't know where to go I can't do it alone I've tried And I don't know why
u can see, they have same output, and the both output are right ..
i am confuse about my program, i dont know where is the error, and what is the
solution ..
i hope somebody here, can help me to solve my problem with that code ..
thank you very much ..
regards
novhard..