我刚刚开始为wp7开发应用程序,我尝试使用c#将二进制字符串转换回ascii。
但我不知道怎么做。 希望有人可以帮助我。
示例:
输入字符串:0110100001100101011011000110110001101111
输出字符串:hello
答案 0 :(得分:3)
使用SubString并内置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编码将这些字节转换为字符串。
答案 1 :(得分:0)
您可以使用BitArray
类并使用其CopyTo
函数将您的位字符串复制到字节数组
然后,您可以使用Text.Encoding.UTF8.GetString(Byte[])