如何在C#中从字符串中获取位?

6
如果我有以下字符串“Blue Box”,在c#中如何获取组成该字符串的位,并以什么数据类型存储它。
如果我只写字母“o”,我得到111作为字节和111作为位数。它是在截断0,如果我写“oo”,我在字节数组中得到每个o的111,但对于位数,我得到值28527。为什么?

2
请阅读这篇文章:《任何软件开发者都应该了解的有关Unicode和字符编码的最低限度(不能忽略!)》http://www.joelonsoftware.com/articles/Unicode.html - mmcdole
3个回答

17

如果你想将位以字符串格式表示,可以使用这个函数:

public string GetBits(string input)
{
    StringBuilder sb = new StringBuilder();
    foreach (byte b in Encoding.Unicode.GetBytes(input))
    {
        sb.Append(Convert.ToString(b, 2));
    }
    return sb.ToString();
}

如果您使用"蓝盒子"的例子,您将得到:

string bitString = GetBits("Blue Box");
// bitString == "100001001101100011101010110010101000000100001001101111011110000"

15

你可以执行以下操作:

byte[] bytes = System.Text.UTF8Encoding.Default.GetBytes("Blue Box");
BitArray bits = new System.Collections.BitArray(bytes);

1
BitArray 属于哪个命名空间? - Xaisoft

5

这取决于你所说的“bits”的含义。你是指ASCII表示法吗?UTF8?UTF16?System.Text.Encoding命名空间可以让你开始。


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