在C#中将字符串转换为二进制序列

7

6
“Hello” 如何变成 “1011010”? - Lasse V. Karlsen
我担心“Hello”的二进制序列不是1011010。 - FIre Panda
2
@Abdul,可能是这样,我们只需要知道映射算法。 - Lasse V. Karlsen
是的,可能是这样,但是映射算法是什么? - FIre Panda
@Sudantha,很抱歉你没有理解这里的问题。您需要告诉我们您想如何将字符串映射到位。您是否希望将ASCII编码作为一系列位? - Lasse V. Karlsen
显示剩余3条评论
4个回答

22

试试这个:

string str = "Hello"; 
byte []arr = System.Text.Encoding.ASCII.GetBytes(str);

9
通过您的代码,我们只能得到字节数组...但查询是“将字符串转换为C#中的二进制序列” - Manu Nair
5
为什么这个答案被认可了? - Krythic

21
string result = string.Empty;
foreach(char ch in yourString)
{
   result += Convert.ToString((int)ch,2);
}

这将把"Hello"翻译成10010001100101110110011011001101111


1
你的字符串只有35个字符。你需要在.ToString()调用中添加一个.PadLeft(8, '0') - Michael

4
string testString = "Hello";
UTF8Encoding encoding = new UTF8Encoding();
byte[] buf = encoding.GetBytes(testString);

StringBuilder binaryStringBuilder = new StringBuilder();
foreach (byte b in buf)
{
    binaryStringBuilder.Append(Convert.ToString(b, 2));
}
Console.WriteLine(binaryStringBuilder.ToString());

1
不错...这就是我在寻找的代码... - Manu Nair
1
这个答案为什么不被接受呢? - Tvde1

0
使用BitConverter获取字符串的字节,然后将这些字节格式化为它们的二进制表示形式:
byte[] bytes = System.Text.Encoding.Default.GetBytes( "Hello" );
StringBuilder sb = new StringBuilder();
foreach ( byte b in bytes )
{
    sb.AppendFormat( "{0:B}", b );
}
string binary = sb.ToString();

-1:没有重载的BitConverter.GetBytes方法可以接受字符串。 - Lasse V. Karlsen
谢谢,我自己找到了。更改代码片段使用编码。 - PVitt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接