我是一名学习c#的初学者。 我编写了一个方法,它以16位的顺序转换一个两位整数
// takes input from user and convert it
private void Button_Click(object sender, RoutedEventArgs e)
{
string input = key.Text;
string mykey = "";
foreach (var item in input)
{
mykey += Binary(item);
}
key.Text = mykey;
}
private string Binary(Char ch)
{
string result = string.Empty;
int asciiCode;
char[] bits = new char[8];
asciiCode = (int)ch;
result = Convert.ToString(asciiCode, 2);;
bits = result.PadLeft(8, '0').ToCharArray();
return string.Join("",bits);
}
它可能有点复杂,但它正在发挥作用。然而我的主要问题是我想要反转过程:即从一个序列如0011000100110010我应该检索到12的int。有人可以帮助我走上正确的轨道吗?
任何帮助都非常适合
答案 0 :(得分:1)
鉴于你正在学习C#,我会给你一个简单,直接的例子,即使它不是最佳或花哨的。我认为这会更好地为你服务。
static int GetInt(string value)
{
double result = 0d;//double
IEnumerable<char> target = value.Reverse();
int index = 0;
foreach (int c in target)
{
if (c != '0')
result += (c - '0') * Math.Pow(2, index);
index++;
}
return (int)result;
}
此代码适用于任何填充。此外,如果您愿意,可以将其更改为Int16,或者根据需要进行扩展。此外,它假定给定的字符串在末尾具有最低有效位(小端)。
答案 1 :(得分:0)
var int16 = Convert.ToInt16("0011000100110010", 2);