2011-05-15 113 views
5

嗨,我能夠將ASCII字符串轉換爲二進制使用binarywriter ..作爲10101011。即時通訊需要回轉換Binary --->ASCII字符串..任何想法如何做到這一點?二進制到對應的ASCII字符串轉換

+1

System.Text.Encoding.ASCII.GetString(data)? – 2011-05-15 13:45:51

+3

Convert.ToBase64String(data)有什麼問題?爲什麼要將字節放入流中,然後再從該流中讀取這些字節? – 2011-05-15 13:46:24

+0

'ToBase64String'給我一個Base64的值不是文本! – Sudantha 2011-05-15 13:48:55

回答

18

這應該做的伎倆......或者至少讓你開始...

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); 

所以......

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

非常感謝Lotr Coder ..正是我需要的並且非常棒的工作! ..我整天都在嘗試停電,終於結束了!非常感謝 ! :D – Sudantha 2011-05-15 14:11:06

+0

@Sudantha:它有助於提出正確的問題。 – 2011-05-15 14:14:51

+0

@Sudantha:我已經合併了你的兩個相同的問題;你可能想重新接受這個答案(它在另一個問題上被接受了)。 – balpha 2011-05-15 14:56:14

1

以此爲一個簡單的例子:

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

    string x = Convert.ToBase64String(arrByte); 
} 

這個鏈接的回答有關於這種轉換的有趣的細節:

binary file to string

+0

HI leniel im有一個字符串如何將其轉換爲'byte []'我使用'Encoding.ASCHII' ....但它給了一個垃圾〜 – Sudantha 2011-05-15 04:21:50

+0

@Sudantha:看看鏈接的答案... – 2011-05-15 04:28:30

2

下面是完整的代碼爲您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); 
+0

好點。 – 2011-05-15 04:27:43

5

如果你有ASCII碼只有你可以使用Encoding.ASCII.GetBytesEncoding.ASCII.GetString

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

Sometim ES,而不是使用內置的工具,最好使用「自定義」代碼..試試這個功能:

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(); 
} 

010000010100001001000011測試它使用「原始」的ASCII值返回ABC

相關問題