C# 如果我没有';我不知道它是怎么翻过来的?

C# 如果我没有';我不知道它是怎么翻过来的?,c#,C#,很容易看出G在A和Z之间,但如果我让用户输入从56AAA7105A25到56AAA71064D6的序列号范围,我如何确定另一个序列号或范围是否在前面指定的两个序列号之间。为了让我知道它是否落在它们之间,我不需要知道它是如何滚动的。我面临的问题是,根据代码(在本例中为c#),一个值将被视为大于或小于我指定的两个值,但根据用户的说法,他们输入的值实际上超出了范围。如何处理这种情况?您可以将序列号转换为int,然后检查其中一个是否介于其他序列号之间。如果序列号只是十六进制数,这一点也不难,如果它们由整

很容易看出G在A和Z之间,但如果我让用户输入从
56AAA7105A25
56AAA71064D6
的序列号范围,我如何确定另一个序列号或范围是否在前面指定的两个序列号之间。为了让我知道它是否落在它们之间,我不需要知道它是如何滚动的。我面临的问题是,根据代码(在本例中为c#),一个值将被视为大于或小于我指定的两个值,但根据用户的说法,他们输入的值实际上超出了范围。如何处理这种情况?

您可以将序列号转换为int,然后检查其中一个是否介于其他序列号之间。如果序列号只是十六进制数,这一点也不难,如果它们由整个字母表组成,您只需构建一个函数,以给定的基数转换数字(我猜0-9+a-Z等于25)将A-Z视为值为10-25的数字。

您可以将序列号转换为整数,然后检查其中一个是否介于其他数字之间。如果序列号只是十六进制数,这一点也不难,如果它们由整个字母表组成,您只需构建一个函数,将给定基数的数字(我猜0-9+a-Z是25)转换为整数。只需将a-Z视为值为10-25的数字。

是。您需要知道序列号是如何定义的。如果您不知道两个序列号是如何比较的,那么您的代码也无法正确地进行比较。

是的。您需要知道序列号是如何定义的。如果您不知道两个序列号的比较方式,那么您的代码也将无法获得正确的结果。

假设这些是十六进制数,您应该能够将它们转换为长整数(对于48位的32位整数来说,它们太大了)

class Program
    {
        static void Main(string[] args)
        {
            SerialNumber first = new SerialNumber("56AAA7105A25");
            SerialNumber second = new SerialNumber("57AAA71064C6");
            SerialNumber third = new SerialNumber("58AAA71064D6");

            Console.WriteLine(first.CompareTo(second));
            Console.WriteLine(second.CompareTo(third));

            Console.ReadLine();
        }
    }

    struct SerialNumber : IComparable<SerialNumber>
    {
        public string Serial { get; set; }


        public SerialNumber(string serial) : this()
        {
            this.Serial = serial;
        }

        public int CompareTo(SerialNumber other)
        {
            int compareTo = 0;

            using (CharEnumerator enum1 = Serial.GetEnumerator())
            using (CharEnumerator enum2 = other.Serial.GetEnumerator())
            {
                while (enum1.MoveNext() && enum2.MoveNext())
                {
                    if (enum1.Current != enum2.Current)
                    {
                        compareTo = enum1.Current.CompareTo(enum2.Current);
                        break;
                    }
                }
            }

            return compareTo;
        }
    }

或者,如果您确实知道有效数字是什么,并且它们不是自然顺序,则可以创建一个自定义类,重写
运算符,并在输入已知无效值时引发异常。

假设这些是十六进制数,您应该能够将它们转换为长字符串(它们对于48位的32位整数来说太大了)


或者,如果您确实知道有效数字是什么,并且它们不是按自然顺序排列的,则可以创建一个自定义类,重写
运算符,并在输入已知无效值时引发异常。

只需从左到右遍历数字即可(不要忘记将所有数字的零填充到相同的长度),并比较此位置上的两个数字/字母。如果它们不同,则可以打破循环。

只需从左到右遍历数字(不要忘记将所有数字的零填充到相同的长度),并比较此位置上的两个数字/字母。如果它们不同,则可以中断循环。

类似的内容如何

class Program
    {
        static void Main(string[] args)
        {
            SerialNumber first = new SerialNumber("56AAA7105A25");
            SerialNumber second = new SerialNumber("57AAA71064C6");
            SerialNumber third = new SerialNumber("58AAA71064D6");

            Console.WriteLine(first.CompareTo(second));
            Console.WriteLine(second.CompareTo(third));

            Console.ReadLine();
        }
    }

    struct SerialNumber : IComparable<SerialNumber>
    {
        public string Serial { get; set; }


        public SerialNumber(string serial) : this()
        {
            this.Serial = serial;
        }

        public int CompareTo(SerialNumber other)
        {
            int compareTo = 0;

            using (CharEnumerator enum1 = Serial.GetEnumerator())
            using (CharEnumerator enum2 = other.Serial.GetEnumerator())
            {
                while (enum1.MoveNext() && enum2.MoveNext())
                {
                    if (enum1.Current != enum2.Current)
                    {
                        compareTo = enum1.Current.CompareTo(enum2.Current);
                        break;
                    }
                }
            }

            return compareTo;
        }
    }
类程序
{
静态void Main(字符串[]参数)
{
SerialNumber first=新的SerialNumber(“56AAA7105A25”);
SerialNumber second=新序列号(“57AAA71064C6”);
SerialNumber第三个=新的SerialNumber(“58AAA71064D6”);
Console.WriteLine(第一个,比较(第二个));
控制台写入线(第二个与第三个相比);
Console.ReadLine();
}
}
结构SerialNumber:IComparable
{
公共字符串序列{get;set;}
公共序列号(字符串序列号):this()
{
这个.Serial=Serial;
}
公共整数比较(序列号其他)
{
int compareTo=0;
使用(CharEnumerator enum1=Serial.GetEnumerator())
使用(CharEnumerator enum2=other.Serial.GetEnumerator())
{
while(enum1.MoveNext()&&enum2.MoveNext())
{
if(enum1.Current!=enum2.Current)
{
compareTo=enum1.Current.compareTo(enum2.Current);
打破
}
}
}
返回比较;
}
}

像这样的东西怎么样

class Program
    {
        static void Main(string[] args)
        {
            SerialNumber first = new SerialNumber("56AAA7105A25");
            SerialNumber second = new SerialNumber("57AAA71064C6");
            SerialNumber third = new SerialNumber("58AAA71064D6");

            Console.WriteLine(first.CompareTo(second));
            Console.WriteLine(second.CompareTo(third));

            Console.ReadLine();
        }
    }

    struct SerialNumber : IComparable<SerialNumber>
    {
        public string Serial { get; set; }


        public SerialNumber(string serial) : this()
        {
            this.Serial = serial;
        }

        public int CompareTo(SerialNumber other)
        {
            int compareTo = 0;

            using (CharEnumerator enum1 = Serial.GetEnumerator())
            using (CharEnumerator enum2 = other.Serial.GetEnumerator())
            {
                while (enum1.MoveNext() && enum2.MoveNext())
                {
                    if (enum1.Current != enum2.Current)
                    {
                        compareTo = enum1.Current.CompareTo(enum2.Current);
                        break;
                    }
                }
            }

            return compareTo;
        }
    }
类程序
{
静态void Main(字符串[]参数)
{
SerialNumber first=新的SerialNumber(“56AAA7105A25”);
SerialNumber second=新序列号(“57AAA71064C6”);
SerialNumber第三个=新的SerialNumber(“58AAA71064D6”);
Console.WriteLine(第一个,比较(第二个));
控制台写入线(第二个与第三个相比);
Console.ReadLine();
}
}
结构SerialNumber:IComparable
{
公共字符串序列{get;set;}
公共序列号(字符串序列号):this()
{
这个.Serial=Serial;
}
公共整数比较(序列号其他)
{
int compareTo=0;
使用(CharEnumerator enum1=Serial.GetEnumerator())
使用(CharEnumerator enum2=other.Serial.GetEnumerator())
{
while(enum1.MoveNext()&&enum2.MoveNext())
{
if(enum1.Current!=enum2.Current)
{
compareTo=enum1.Current.compareTo(enum2.Current);
打破
}
}
}
返回比较;
}
}

如果你不知道确定顺序的算法,那么你需要找到它。你可以尝试猜测,但这可能会导致长期的痛苦,因为算法不需要简单

一定有人能告诉你答案吗?你的用户听起来好像有一些想法(至少足以告诉你你错了),无论是谁指定了你正在编写的代码都应该这样做(如果合适的话)或者