PDA

View Full Version : نقیض کردن یک بیت از رشته باینری



رامین مرادی
شنبه 30 فروردین 1393, 19:26 عصر
سلام شاید عنوان تایپیک عجیب غریب باشه . چیز دیگه ای به ذهنم نرسید :لبخند:
من یه رشته باینری تولید میکنم به صورت تصادفی با طول نا معلوم...
حالا میخوام به صورت تصادفی یک بیت اون رو معکوس کنم مثلا ما عدد 11110011 رو تولید کردیم حالا میخوام بیت 3 از سمت راست رو معکوس کنم
نتونستم با توابع رشته ای کاری کنم ... زیاد باهاشون کار نکردم بلد نیستم... :لبخند:
به طور کل میخوام یه تابع بنویسم که یه رشته باینری دریافت کنه و یک عدد که محل معکوس کردن رو نشون میده . و اونو تبدیل کنه و خروجی به صورت رشته باشه

private string mu(string binery,int point)
{
return s;
}


چیکار کنم؟؟؟؟؟

rahnema1
شنبه 30 فروردین 1393, 22:16 عصر
سلام، با یکی از این دو روش می تونید:

private string mu(string binery,int point)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder(binery);
sb[point]=(sb[point]=='1'?'0':'1');
return sb.ToString();
}


private string mu(string binery,int point)
{
char bit = binery[point];
binery=binery.Remove(point,1);
return binery.Insert(point,(bit=='1'?'0':'1').ToString()) ;
}

همچنین به جای رشته می شه از BitArray استفاده کرد

int[] arr =new int[]{1,0,0,1,1}
System.Collections.BitArray ba = new System.Collections.BitArray(arr);
ba[point]=!ba[point];