C# 将stringbinary转换为ascii

C# 将stringbinary转换为ascii,c#,windows-phone-7,C#,Windows Phone 7,我刚刚开始为wp7开发应用程序,我正在尝试使用c#将二进制字符串转换回ascii 但我不知道该怎么做。 希望有人能帮我 例如: 输入字符串:011010110010110110001101100011111 输出字符串:hello简单的解决方案, 使用子字符串和内置Convert.ToByte可能如下所示: string input = "0110100001100101011011000110110001101111"; int charCount = input.Length / 8; va

我刚刚开始为wp7开发应用程序,我正在尝试使用c#将二进制字符串转换回ascii

但我不知道该怎么做。 希望有人能帮我

例如:

输入字符串:
011010110010110110001101100011111

输出字符串:
hello

简单的解决方案, 使用子字符串和内置Convert.ToByte可能如下所示:

string input = "0110100001100101011011000110110001101111";
int charCount = input.Length / 8;
var bytes = from idx in Enumerable.Range(0, charCount)
            let str = input.Substring(idx*8,8)
            select Convert.ToByte(str,2);
string result = Encoding.ASCII.GetString(bytes.ToArray());
Console.WriteLine(result);
另一个解决方案是自己进行计算: 如果您想知道应该如何执行计算,而不是框架中的哪种方法适合您,我添加了此选项:

string input = "0110100001100101011011000110110001101111";
var chars = input.Select((ch,idx) => new { ch, idx});
var parts = from x in chars
            group x by x.idx / 8 into g
            select g.Select(x => x.ch).ToArray();

var bytes = parts.Select(BitCharsToByte).ToArray();
Console.WriteLine(Encoding.ASCII.GetString(bytes));
其中BitCharsToByte执行从char[]到相应字节的转换:

byte BitCharsToByte(char[] bits) 
{
    int result = 0;
    int m = 1;
    for(int i = bits.Length - 1 ; i >= 0 ; i--) 
    {
        result += m * (bits[i] - '0');
        m*=2;
    }
    return (byte)result;
}

上述两种解决方案的作用基本相同:首先将字符分组,每组8个;然后获取该子字符串,获取表示的位并计算字节值。然后使用ASCII编码将这些字节转换为字符串。

您可以使用
位数组
类并使用其
CopyTo
功能将您的位字符串复制到字节数组

然后,您可以使用
Text.Encoding.UTF8.GetString(byte[])将字节数组转换为字符串。


请参阅此

可能的重复:直接执行此操作将翻转生成的
字节[]
中位的顺序,因此代码必须考虑到这一点。您好Uday0119,也感谢您的回复。对似乎您必须在wp7中使用
Text.Encoding.UTF8.GetString(Byte[])
,而不是
Text.Encoding.ASCII.GetString(Byte[])
。哦,对于那些收到此错误消息“System.Text.Encoding.GetString(Byte[])的用户,由于保护级别的原因,无法访问”,您可能需要查看此Hi@juststart,所以我希望你能下定决心。如果你觉得这是对你问题的回答。那么请将此标记为已接受。ThanxHi driis,谢谢你的回复,我已经尝试了你上面提到的方法。然而,wp7中不支持Encoding.ASCII,这也是让我很长一段时间感到沮丧的原因。