数字转换器 – 移动化!





0/5 (0投票)
一个用于将数字从一种进制转换为另一种进制的移动应用程序。
背景
四年前,我用 C# 编写了两个方法,一个用于将十进制数转换为任何进制,另一个用于将任何进制数转换为十进制数。
这篇文章也发表在 CodeProject 上,标题为:十进制到任何进制及其反向转换,现在,我添加了一个额外的功能,用于将一个数字从任何进制转换为另一个进制。例如,使用这种方法,我们可以将二进制数转换为八进制数。相应地,UI 也进行了更改。
这个更新版本的数字转换器作为一个移动设备应用程序提供,目前配置为在 Windows Mobile 5.0 Pocket PC R2 设备和模拟器上运行。
引言
数字转换器允许您将任何进制的数字转换为另一种进制。DecimalToBase
方法将数字从十进制转换为用户输入的指定进制。另一个方法 BaseToDecimal
将数字从指定进制转换为相应的十进制等值。
以下方法实际上没有从以前的版本中修改,保持不变,用于将数字转换为用户输入的任何进制。
string DecimalToBase(int iDec, int numbase)
{
string strBin = "";
int[] result = new int[32];
int MaxBit = 32;
for (; iDec > 0; iDec /= numbase)
{
int rem = iDec % numbase;
result[--MaxBit] = rem;
}
for (int i = 0; i < result.Length; i++)
if ((int)result.GetValue(i) >= base10)
strBin += cHexa[(int)result.GetValue(i) % base10];
else
strBin += result.GetValue(i);
strBin = strBin.TrimStart(new char[] { '0' });
return strBin;
}
BaseToDecimal
方法被修改了,因为之前对十六进制输入进行了不必要的检查。
int BaseToDecimal(string sBase, int numbase)
{
int dec = 0;
int b;
int iProduct = 1;
string sHexa = "";
if (sBase.IndexOfAny(cHexa) >= 0)
for (int i = 0; i < cHexa.Length; i++)
sHexa += cHexa.GetValue(i).ToString();
for (int i = sBase.Length - 1; i >= 0; i--, iProduct *= numbase)
{
string sValue = sBase[i].ToString();
if (sValue.IndexOfAny(cHexa) >= 0)
b = iHexaNumeric[sHexa.IndexOf(sBase[i])];
else
b = (int)sBase[i] - asciiDiff;
dec += (b * iProduct);
}
return dec;
}
这两个方法根据用户输入被激活,并通过按下“转换”的左软键来调用。
if (comboBox1.SelectedItem.ToString() != "10" && comboBox2.SelectedItem.ToString() != "10")
{
String temp = BaseToDecimal(textBox1.Text, Int32.Parse(comboBox1.Text)).ToString();
textBox3.Text = DecimalToBase(Int32.Parse(temp), Int32.Parse(comboBox2.Text));
}
else if (comboBox2.SelectedItem.ToString() == "10")
textBox3.Text = BaseToDecimal(textBox1.Text, Int32.Parse(comboBox1.Text)).ToString();
else if (comboBox1.SelectedItem.ToString() == "10")
textBox3.Text = DecimalToBase(Int32.Parse(textBox1.Text), Int32.Parse(comboBox2.Text));
以下是一些示例输出
将十进制数转换为二进制数
将十进制数转换为八进制数
将二进制数转换为十进制数
将八进制数转换为二进制数
结论
这个数字转换器易于安装在您的 Pocket PC 上,可以通过文章顶部的链接下载。该应用程序的部署可以通过 Visual Studio 2008 完成,或者您可以使用 Windows Mobile Device Center 手动传输文件。