【问题标题】:How do I add a button to call a Base10 conversion method [duplicate]如何添加按钮来调用Base10转换方法[重复]
【发布时间】:2014-10-02 12:44:04
【问题描述】:

我是 MS VS12 的新手,我正在做一个课堂项目,要求我将 Base 10 数字转换为 Bases 2、3、8 和 16。它还要求我将转换放入一个方法和然后使用按钮调用这些方法,我不知道如何开始。谁能帮我?!

这是我目前所拥有的(从 Quickest way to convert a base 10 number to any base in .NET?)

    public static string IntToBinary(int value, char[] basechars)
    {
        string binary = IntToBinary(16, new char[] { '0', '1' });

        string hex = IntToBinary(16, new char[] { '0', '1', '2', '3', '4', '5', '6',
          '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'});

        string result = string.Empty;
        int conversion = basechars.Length;

        do
        {
            result = basechars[value % conversion] + result;
            value = value / conversion;
        }
        while (value > 0);

        return result;
      }

我有 5 个按钮。一个通用的“转换”,它从一个文本框中获取一个数字,然后从另一个文本框中获取一个基数 (2-16),一旦单击“转换”按钮,它就会将该数字转换为指定的基数。其他按钮为:Base2、Base3、Base8、Base16。我必须为每个转换编写方法并从指定的按钮调用它们

我必须调用与按钮相关的方法。

【问题讨论】:

  • 您的具体问题是什么?
  • 首先我走在正确的道路上吗?其次,如何在按钮点击事件中调用该方法?如果我的措辞不正确,我很抱歉。我对这个程序很陌生。
  • 我有 5 个按钮。一个通用的“转换”,它从一个文本框中获取一个数字,然后从另一个文本框中获取一个基数 (2-16),一旦单击“转换”按钮,它就会将该数字转换为指定的基数。其他按钮为:Base2、Base3、Base8、Base16。我必须为每个转换编写方法并从指定的按钮调用它们。
  • 这非常接近一个现有的问题,这里有很多答案。 stackoverflow.com/questions/923771/…
  • 我知道,但我的问题是我不确定如何开始。我在帖子中提到了这个问题。我不确定为按钮调用正确的方法。

标签: c#


【解决方案1】:

您在方法内部有两次对方法本身的调用,第一次将把它扔到一个以StackOverflowException 结尾的循环中。只需从方法中删除这些调用,也许将其重命名为更有意义的名称,因为它不仅会转换为二进制:

public static string IntToBase(int value, char[] basechars)
{
    string result = string.Empty;
    int conversion = basechars.Length;

    do
    {
        result = basechars[value % conversion] + result;
        value = value / conversion;
    }
    while (value > 0);

    return result;
}

现在你有了一些有用的东西。

我假设您在文本框中有要转换的号码,我将其命名为txtNumber。在应该将数字转换为二进制的按钮的处理程序中,您可以将文本框中的文本解析为数字,然后调用方法将其作为二进制获取:

int num = Int32.Parse(txtNumber.Text);
string binary = IntToBase(num, new char[] { '0', '1' });

对该方法的调用与我从该方法中删除的代码相同,只是它使用变量num 而不是16


框架中实际上有一些方法可以转换为不同的基数(基数 3 除外),但这可能不是您应该在课程中学习的内容。无论如何,那将是:

public static string IntToBase(int value, int base)
{
  return Convert.ToString(value, base);
}

【讨论】:

  • 请注意 Convert.ToString(value, base) 仅适用于 base 2、8、10 或 16,因此它不适用于 OP,因为他也需要 base 3
  • @Manu:好点子,我添加了一个注释。无论如何,这只是答案的一个侧面。
  • 好的,这样就可以将 Base10 转换为二进制。答案返回 '1100100' 它应该返回 '01100100' 我只需要添加开头的零。
  • 我看到它一直在被否决,我知道这已经得到了回答并且没有很好地解释,但我不确定如何开始编写代码。我很感激这方面的帮助。我整个学期都在努力学习这门课程,需要一些专家的帮助。
  • 所以在将 Base 10 转换为 Hex 时,我基本上会做同样的事情,对吧?像这样: public static string IntToHex(int value, char[] basechars) { string hex = IntToHex(16, new char[] { '0', '1', '2', '3', '4', '5'、'6'、'7'、'8'、'9'、'A'、'B'、'C'、'D'、'E'、'F'});与前面的代码在这里玩? }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-03
  • 1970-01-01
  • 2019-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-09
相关资源
最近更新 更多