ورود

View Full Version : compress string between java and C#‎‎



powerboy2988
شنبه 19 آذر 1390, 14:55 عصر
سلام...

من می خوام یک string رو تو java رو compress کنم و همین string رو تو #c می خوام decompress کنم...

اما هر کاری کردم نشد...


راه حلی دارید؟؟


ممنونن

L u k e
شنبه 19 آذر 1390, 23:00 عصر
منظورت Encrypt ه ؟

powerboy2988
یک شنبه 20 آذر 1390, 08:44 صبح
منظورت Encrypt ه ؟

گفتم که compress دوست عزیز......

spiderman200700
یک شنبه 20 آذر 1390, 17:54 عصر
این برای compress توی جاوا:
public static String compress(String str){
if (str == null || str.length() == 0) {
return str;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(out);
gzip.write(str.getBytes());
gzip.close();
return out.toString("utf-8");
}

اینم برای decompress توی C# :
public static string DecompressString(string compressedText)
{
byte[] gZipBuffer = Convert.FromBase64String(compressedText);
using (var memoryStream = new MemoryStream())
{
int dataLength = BitConverter.ToInt32(gZipBuffer, 0);
memoryStream.Write(gZipBuffer, 4, gZipBuffer.Length - 4);

var buffer = new byte[dataLength];

memoryStream.Position = 0;
using (var gZipStream = new GZipStream(memoryStream, CompressionMode.Decompress))
{
gZipStream.Read(buffer, 0, buffer.Length);
}

return Encoding.UTF8.GetString(buffer);
}
}

اینا رو امتحان کن ، شاید جواب بده.

powerboy2988
دوشنبه 21 آذر 1390, 13:58 عصر
این برای compress توی جاوا:
public static String compress(String str){
if (str == null || str.length() == 0) {
return str;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(out);
gzip.write(str.getBytes());
gzip.close();
return out.toString("utf-8");
}

اینم برای decompress توی C#‎ :
public static string DecompressString(string compressedText)
{
byte[] gZipBuffer = Convert.FromBase64String(compressedText);
using (var memoryStream = new MemoryStream())
{
int dataLength = BitConverter.ToInt32(gZipBuffer, 0);
memoryStream.Write(gZipBuffer, 4, gZipBuffer.Length - 4);

var buffer = new byte[dataLength];

memoryStream.Position = 0;
using (var gZipStream = new GZipStream(memoryStream, CompressionMode.Decompress))
{
gZipStream.Read(buffer, 0, buffer.Length);
}

return Encoding.UTF8.GetString(buffer);
}
}

اینا رو امتحان کن ، شاید جواب بده.

ممنون... تست کردم.. اما جواب نداده...... خودتون تست کردین؟

یک مشکل دیگه هم هست برای BitConverter هستش که برای sign bit کار می کنه ... در حالی که تو Java ، به صورت unsign bit هست....

خیلی بابت این مشکل دارم...

mazdadoost
دوشنبه 21 آذر 1390, 18:45 عصر
سلام
کلاس های لازم رو باید ضمیمه کلاس پت کنید.

powerboy2988
دوشنبه 21 آذر 1390, 19:45 عصر
سلام
کلاس های لازم رو باید ضمیمه کلاس پت کنید.

کدوم کلاس ها رو؟؟

mazdadoost
دوشنبه 21 آذر 1390, 20:33 عصر
spiderman200700 (http://barnamenevis.org/member.php?133001-spiderman200700)
باید بگه.
از لایبری GZIP استفاده کرده .نمی دونم منبعش چیه!

powerboy2988
دوشنبه 21 آذر 1390, 21:36 عصر
spiderman200700 (http://barnamenevis.org/member.php?133001-spiderman200700)
باید بگه.
از لایبری GZIP استفاده کرده .نمی دونم منبعش چیه!

از java.util.zip استفاده کرده....

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/zip/GZIPOutputStream.html

spiderman200700
دوشنبه 21 آذر 1390, 23:27 عصر
ممنون... تست کردم.. اما جواب نداده...... خودتون تست کردین؟

یک مشکل دیگه هم هست برای BitConverter هستش که برای sign bit کار می کنه ... در حالی که تو Java ، به صورت unsign bit هست....

خیلی بابت این مشکل دارم...

من اصلا از این متد ها استفاده نکردم.
اینو از یکی از دوستانم که چند وقت پیش همین کاری رو که شما می خوای انجام بدی رو انجام داده بود (و جواب هم گرفته بود)،پرسیدم،و ایشون هم دقیقا همین متد ها رو واسم فرستاد و من هم اینجا برای شما گذاشتمش.

spiderman200700
دوشنبه 21 آذر 1390, 23:33 عصر
spiderman200700 (http://barnamenevis.org/member.php?133001-spiderman200700)
باید بگه.
از لایبری GZIP استفاده کرده .نمی دونم منبعش چیه!
بله.همونطور که جناب powerboy2988 گفتند از java.util.zip.GZIPOutputStream استفاده شده.

من یه سرچ کوچیک هم انجام دادم و همین متد رو توی این آدرس با توضیحات و بحث در موردش پیدا کردم.(البته شاید خودتون قبلا دیده باشیدش)
http://stackoverflow.com/questions/3649485/how-to-compress-a-string

powerboy2988
سه شنبه 22 آذر 1390, 12:05 عصر
بله.همونطور که جناب powerboy2988 گفتند از java.util.zip.GZIPOutputStream استفاده شده.

من یه سرچ کوچیک هم انجام دادم و همین متد رو توی این آدرس با توضیحات و بحث در موردش پیدا کردم.(البته شاید خودتون قبلا دیده باشیدش)
http://stackoverflow.com/questions/3649485/how-to-compress-a-string

ممنون از شما.. من نتونستم خروجی بگیرم... با این دوستتون که گفتین این کار رو کرده.. میشه در ارتباط بود..

ممنون

spiderman200700
سه شنبه 22 آذر 1390, 21:46 عصر
متاسفانه بنا به دلایلی ، الآن نمیشه با ایشون تماس گرفت.
عذر میخوام.