二进制到对应的ASCII字符串转换
您好我能够使用二进制文件将ASCII
字符串转换为二进制文件..作为10101011
。 我需要回转换Binary
—> ASCII
字符串..任何想法怎么做?
这应该是诀窍……或者至少让你开始……
public Byte[] GetBytesFromBinaryString(String binary) { var list = new List(); 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);
如果您只有ASCII章程,则可以使用Encoding.ASCII.GetBytes
和Encoding.ASCII.GetString
。
var text = "Test"; var bytes = Encoding.ASCII.GetBytes(text); var newText = Encoding.ASCII.GetString(bytes);
这是您的答案的完整代码
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);
以此为例,简单说明:
public void ByteToString() { Byte[] arrByte = { 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 }; string x = Convert.ToBase64String(arrByte); }
这个链接的答案有关于这种转换的有趣细节:
二进制文件到字符串
有时不使用内置工具,最好使用“自定义”代码..尝试此function:
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
。