PDA

View Full Version : تبدیل رشته به عدد



hojjjat
شنبه 29 فروردین 1394, 18:29 عصر
سلام
من میخوام از رشته ای مثل "hojjat" یک عدد بدست بیارم عددش مهم نیست فقط میخوام همیشه یکسان باشه ایا تابعی چیزی داره؟؟

بیتا حکمت
شنبه 29 فروردین 1394, 18:50 عصر
راهی که به ذهن من می رسه : حروفشو جدا کنید. کد اسکی حروف رو جمع کنید .یک عددی به دست میاد که همیشه ثابته .

Vahid2016
شنبه 29 فروردین 1394, 19:48 عصر
سلام
من میخوام از رشته ای مثل "hojjat" یک عدد بدست بیارم عددش مهم نیست فقط میخوام همیشه یکسان باشه ایا تابعی چیزی داره؟؟

سلام ، بله ،
()yourString.GetHashCode و همیشه مقدار بازگشتی برای یک رشته خاص یکسان خواهد بود اما لزوما منحصر به فرد نیست و با احتمال خیلی کمی ممکنه برای یک رشته دیگه همین مقداری رو به دست بیارید که از ;()hojjat".GetHashCode" به دست میارید

hojjjat
شنبه 29 فروردین 1394, 20:18 عصر
من واسه تبدیل قفل نرم از روی سریال cpu میخوام بنابراین اگر هر دفعه ی چیزی بده نمیشه
در کل این تابع هش چکار میکنه؟

shahab2025
یک شنبه 30 فروردین 1394, 11:19 صبح
من واسه تبدیل قفل نرم از روی سریال cpu میخوام بنابراین اگر هر دفعه ی چیزی بده نمیشه
در کل این تابع هش چکار میکنه؟

تا جائیکه من میدونم این تابع عمل Encrypt کردن یک طرفه را انجام میده و برای یک مقدار ثابت همیشه یک جواب ثابت برمیگردونه ولی یک در میلیون احتمال داره که برای دو رشته متفاوت یک رشته مساوی برگردونه ولی امکان برعکسش نیست .

MehdiElexal
یک شنبه 30 فروردین 1394, 11:36 صبح
از این دی ال ال ضمیمه استفاده کن

Javad_raouf
یک شنبه 30 فروردین 1394, 13:27 عصر
حجت جان فکر کنم منظور دوستان رو بد متوجه شدی
چیزی که به درد شما می خوره همین
;()hojjat".GetHashCode" است و همیشه مقدار یکسان میاد
یعنی امکان نداره یک بار یک چیز دیگه بدست بیاد
منظور دوستمون از اینکه ممکنه دو تا رشته کد یکسان داشته باشند اینه که مثلا ممکنه ;()Alireza".GetHashCode" هم همون عددی رو برگردونه که ;()hojjat".GetHashCode" بر می گردونه
که اینم احتمالش اینقدر کمه که قابل چشم پوشیه و در کار شما خیلی اهمیتی نداره

Javad_raouf
یک شنبه 30 فروردین 1394, 13:34 عصر
می تونی از این تابع هم استفاده کنی که مشکل GetHashCode رو نداره و امکان نداره مثلا خروجی Alireza با خروجی Hojjat یکی باشه و حتی خروجی "HOJJAT" با "hojjat" نیز فرق می کنه:

string GetAsc(string Input)

{
char[] AllChar = Input.ToCharArray();
string OutPut = "";
foreach (char x in AllChar)
{
OutPut += Convert.ToInt16(x);
}
return OutPut;
}

ولی شخصا پیشنهاد می کنم از همون GetHashCode استفاده کنی چون مشکل این تابع اینه که عدد ممکنه خیلی بزرگ بشه و حتی توی متغیر Long جا نشه