PDA

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



HAIdle
شنبه 27 مرداد 1386, 18:22 عصر
سلام به همه
من یه رشته دارم(شامل هر نوع کاراکتری اعم از فارسی و انگلیسی و ...). می خواهم این رشته را تبدیل به دنباله ای از صفر ها و یک ها کنم. البته می توان تک تک کاراکترهای آنرا گرفت و یونیکد هر یک را با تقسیمات متوالی تبدیل به دنباله ای از صفر ها و یک ها کرد ولی این روش غیر عاقلانه به نظر می رسد. فکر می کنم باید تابع سرراستی وجود داشته باشد که این کار را انجام دهد. ممنون می شم دوستان راهنمایی کنند.

ghafoori
شنبه 27 مرداد 1386, 18:45 عصر
دوست عزیز این کد یک رشته را بصورت ارایه ای از بایت می دهد


System.Text.UnicodeEncoding text;
text.GetBytes("barnamenevis");

hdv212
شنبه 27 مرداد 1386, 18:55 عصر
فکر کنم این هم بتونه بهت کمک کنه (البته شامل کل ارقام میشه) :

char[] chCol = this.textBox1.Text.ToCharArray();
StringBuilder destinationText = new StringBuilder();
int helper;

foreach (char ch in chCol)
{
helper = (int)ch;
destinationText.Append(helper.ToString());
}

this.textBox2.Text = destinationText.ToString();

PC2st
شنبه 27 مرداد 1386, 19:25 عصر
می خواهم این رشته را تبدیل به دنباله ای از صفر ها و یک ها کنم
برای تبدیل به صفر-یک، در کدی که جناب hdv212 نوشته، متغیر helper رو بصورت زیر به آرایه ای از بیت ها تبدیل کنید:


BitArray bta = new BitArray(helper);

dot_net_lover2
شنبه 27 مرداد 1386, 19:39 عصر
public static string codegenerate(string t)
{
string tc = "";
for (int j = 0; j < t.Length; j++)
{
String oS = t[j].ToString();
byte[] bos = Encoding.ASCII.GetBytes(oS);
MemoryStream ms = new MemoryStream();
BinaryWriter brw = new BinaryWriter(ms);
brw.Write(bos);
String strBin = "";
BitArray ba = new BitArray(ms.ToArray());
for (int i = 0; i < ba.Length; i++)
{
if (ba[i])
{
strBin += 1;
}
else
{
strBin += 0;
}
}
tc += strBin;
}
return tc;
}

از این متد استفاده کن

HAIdle
یک شنبه 28 مرداد 1386, 13:18 عصر
از راهنماییهای همه دوستان متشکرم

itsoitso2
دوشنبه 03 تیر 1392, 01:19 صبح
public static string codegenerate(string t)
{
string tc = "";
for (int j = 0; j < t.Length; j++)
{
String oS = t[j].ToString();
byte[] bos = Encoding.ASCII.GetBytes(oS);
MemoryStream ms = new MemoryStream();
BinaryWriter brw = new BinaryWriter(ms);
brw.Write(bos);
String strBin = "";
BitArray ba = new BitArray(ms.ToArray());
for (int i = 0; i < ba.Length; i++)
{
if (ba[i])
{
strBin += 1;
}
else
{
strBin += 0;
}
}
tc += strBin;
}
return tc;
}

از این متد استفاده کن


ببخشید این روش برای رشته های فارسی جواب نمیده و همه کاراکترهای فارسی را تنها با یک رشته بیات مشابه نمایش میده
چظظر میشه فارسی رو هم به رشته بایتهای درستش تبدیل کرد؟
لطفا کمک کنید دوستان مهربون

Mahmoud.Afrad
دوشنبه 03 تیر 1392, 10:42 صبح
ببخشید این روش برای رشته های فارسی جواب نمیده و همه کاراکترهای فارسی را تنها با یک رشته بیات مشابه نمایش میده
چظظر میشه فارسی رو هم به رشته بایتهای درستش تبدیل کرد؟
لطفا کمک کنید دوستان مهربون
Encoding را روی Utf-8 بزارید.

itsoitso2
چهارشنبه 05 تیر 1392, 18:17 عصر
Encoding را روی Utf-8 بزارید.

از کمکتون واقعا ممنون و سپاسگذارم دوست عزیز

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

Mahmoud.Afrad
چهارشنبه 05 تیر 1392, 19:43 عصر
از کمکتون واقعا ممنون و سپاسگذارم دوست عزیز

ببخشید اگه بخوام کد عددی هر کاراکتر از یک کلمه رو در بیارم و سپس این کدهای عددی هر کاراکتر از اون کلمه کنار هم قرار بگیرن (ولی باهم جمع نشوند) چیکار باید بکنم؟
ممنون میشم اگه راهنماییم کنید.چون تبدیل هر کلمه به کد باینری، رشته های بلندی تولید میشه که مناسب کارم نیست.
با کانورت فکر کنم کارت راه بیفته:
string str = "الف";
foreach (char ch in str)
{
int uc = Convert.ToInt32(ch);
listBox1.Items.Add(uc);
}

itsoitso2
پنج شنبه 06 تیر 1392, 09:40 صبح
با کانورت فکر کنم کارت راه بیفته:
string str = "الف";
foreach (char ch in str)
{
int uc = Convert.ToInt32(ch);
listBox1.Items.Add(uc);
}


بازم ممنون از لطفتون
راه دیگه ای برای کنار هم قرار دادن این اعداد وجود داره؟ چون خروجیم مستقیم میفرستم تو پایگاه داده