我有此代码:
string result = "";
foreach(char item in texte)
{
result += Convert.ToString(item, 2).PadLeft(8, '0');
}
所以我有一个名为result wich的字符串,它是二进制形式的“ bonjour”之类的单词的转换。 对于texte =“ bonjour”,我将字符串结果= 01100010011011111110110111001101010011011110111010101110010作为整数类型。
当我这样做
Console.writeLine(result[0])
我得到0,正常,是我期望的 但是如果我这样做
Console.WriteLine((int)result[0])
或
Console.WriteLine(Convert.ToInt32(result[0]))
我得到48! 我不需要48,我希望整数类型为0或1。
能帮我吗?
答案 0 :(得分:0)
string a = "23jlfdsa890123kl21";
byte[] data = System.Text.Encoding.Default.GetBytes(a);
StringBuilder result = new StringBuilder(data.Length * 8);
foreach (byte b in data)
{
result.Append(Convert.ToString(b, 2).PadLeft(8, '0'));
}
您可以尝试此代码。
答案 1 :(得分:0)
您可以从中减去48!
Console.WriteLine(result[0] - 48);
因为字符数字0-9被编码为48到57。
如果要按索引访问每个位,我建议改用BitArray
:
var bytes = Encoding.ASCII.GetBytes("someString");
var bitArray = new BitArray(bytes);
// now you can access the first bit like so:
bitArray.Get(0) // this returns a bool
bitArray.Get(0) ? 1 : 0 // this gives you a 1 or 0
答案 2 :(得分:0)
只要这样做
Console.WriteLine(Convert.ToInt32(Convert.ToString(result[0])));
您期望它的行为与Convert.ToInt32(string input)
相同,但实际上您正在调用Convert.ToInt32(char input)
,如果您检查文档,他们会明确指出它将返回unicode值(在这种情况下,与ASCII值相同。
http://msdn.microsoft.com/en-us/library/ww9t2871(v=vs.110).aspx