2016-04-02 31 views
1

Konum Değiştirmeyi kullanarak bir metni şifreleyen bir proje üzerinde çalışıyorum. Projeyi char position swapping {Hello -> elloH} kullanarak tamamladım, şimdi bit konumu değiştirme üzerinde çalışıyorum. Bitleri şifrelemek için aynı algoritmayı kullanıyorum ama problem sonuçta oluşan bitleri bir dizgeye nasıl dönüştürebilir?Bir dize C bit nasıl dönüştürülür C#

Not: BitArray'in kullanılması mümkün değildir. İşte

şimdi ne var olduğunu:

static byte[] toByteArray(string s) 
    { 
     byte[] arr = new System.Text.UTF8Encoding(true).GetBytes(s); 
     return arr; 
    }// Byte Array must be changed to bits. 
private void button1_Click(object sender, EventArgs e) 
{ 
     String[] X = new String[x.Length];// Will Contain the Encoded Bits 
     for(int i=0;i<x.Length;i++) 
     { 
      X[i] = Convert.ToString(x[i], 2); 
      textBox3.Text += X[i]; 
     } 
} 
+1

yalnızca bayt içinde veya ayrıca bayt arasında bit kaydırmaya istiyor musunuz? Neden bir BitArray kullanamazsınız? Bir baytta (daha fazla veya daha az) rasgele bitlerin değiştirilmesinin, bu baytın bir dizede bir karakter olarak oluşturulmasını imkansız kılabileceğine dikkat edin. – derpirscher

cevap

2
 string str = "1000111"; //this is your string in bits 
     byte[] bytes = new byte[str.Length/7]; 
     int j = 0; 
     while (str.Length > 0) 
     { 
      var result = Convert.ToByte(str.Substring(0, 7), 2); 
      bytes[j++] = result; 
      if (str.Length >= 7) 
       str = str.Substring(7); 
     } 
     var resultString = Encoding.UTF8.GetString(bytes); 
+0

teşekkürler. İyi çalıştı. –

+0

çok hoş geldiniz. Cevabımı da alabilir misin lütfen? –

İlgili konular