2011-05-15 47 views
5

ASCII dizesini binarywriter .. 10101011 kullanarak ikili olarak dönüştürebiliyordum. im geri Binary --->ASCII dize dönüştürmek için gerekli .. herhangi bir fikir nasıl yapılır?Karşılıklı ASCII Dize Dönüştürme

+1

System.Text.Encoding.ASCII.GetString (veri)? –

+3

Convert.ToBase64String (veri) ile ilgili sorun nedir? Neden baytları bir akışa sürüklüyorsunuz ve o baytları tekrar bu akıştan okuyorsunuz? –

+0

'ToBase64String' bana bir Metni değil Base64 değerini veriyor! – Sudantha

cevap

18

Bu hile yapmak ... ya da en azından başlangıç ​​almalısınız ...

public Byte[] GetBytesFromBinaryString(String binary) 
{ 
    var list = new List<Byte>(); 

    for (int i = 0; i < binary.Length; i += 8) 
    { 
    String t = binary.Substring(i, 8); 

    list.Add(Convert.ToByte(t, 2)); 
    } 

    return list.ToArray(); 
} 

,

Encoding.ASCII.GetString(data); 
ile bitirmek

So ...

var data = GetBytesFromBinaryString("010000010100001001000011"); 
var text = Encoding.ASCII.GetString(data); 
+0

Teşekkürler Çok Kodlayıcı .. Tam olarak ne ihtiyacım vardı ve çok çalışıyorum! .. bütün gün karartma ile çalışıyordum ve sonunda! çok teşekkürler ! : D – Sudantha

+0

@Sudantha: Doğru soruyu sormaya yardımcı olur. –

+0

@Sudantha: İki aynı sorunuzu birleştirdim; Bu cevabı tekrar kabul etmek isteyebilirsiniz (diğer soruda kabul edildi). – balpha

1

Basit bir örnek olarak kabul edin:

public void ByteToString() 
{ 
    Byte[] arrByte = { 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 }; 

    string x = Convert.ToBase64String(arrByte); 
} 

Bu bağlantılı cevap dönüşüm bu tür hakkında ilginç detaylara sahip: Burada

binary file to string

+0

HI leniel im üretmez, 'byte []' 'Encoding.ASCHII' kullanılırken bir dizgeye sahip olur. – Sudantha

+0

@Sudantha: bağlantılı cevaba bir göz atın ... –

2

sizin answer

FileStream iFile = new FileStream(@"c:\test\binary.dat", 
FileMode.Open); 

long lengthInBytes = iFile.Length; 

BinaryReader bin = new BinaryReader(aFile); 

byte[] byteArray = bin.ReadBytes((int)lengthInBytes); 

System.Text.Encoding encEncoder = System.Text.ASCIIEncoding.ASCII; 

string str = encEncoder.GetString(byteArray); 
için tam koddur
+0

İyi nokta var. –

5

Eğer ASCII'niz varsa yalnızca charterler Encoding.ASCII.GetBytes ve Encoding.ASCII.GetString'u kullanabilir. ikili dize için bir bayt dizisi dönüştürüldükten sonra

var text = "Test"; 
var bytes = Encoding.ASCII.GetBytes(text); 
var newText = Encoding.ASCII.GetString(bytes); 
0

Sometim o "ham" ASCII değerlerini kullanarak ABC döndü 010000010100001001000011 ile test edilmiştir

public string BinaryToString(string binary) 
{ 
    if (string.IsNullOrEmpty(binary)) 
     throw new ArgumentNullException("binary"); 

    if ((binary.Length % 8) != 0) 
     throw new ArgumentException("Binary string invalid (must divide by 8)", "binary"); 

    StringBuilder builder = new StringBuilder(); 
    for (int i = 0; i < binary.Length; i += 8) 
    { 
     string section = binary.Substring(i, 8); 
     int ascii = 0; 
     try 
     { 
      ascii = Convert.ToInt32(section, 2); 
     } 
     catch 
     { 
      throw new ArgumentException("Binary string contains invalid section: " + section, "binary"); 
     } 
     builder.Append((char)ascii); 
    } 
    return builder.ToString(); 
} 

: es yerine araçları inşa kullanmanın da bu işlevi deneyin .. "Özel" kodu kullanmak daha iyidir.