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..