对于无符号字节,值太大或太小

时间:2017-11-20 10:19:01

标签: c#

收到以下错误:

  

抛出了System.OverflowException - 值太大了   或者对于无符号字节而言太小。

有没有人知道如何解决它?

class MainClass
{
    public static void Main(string[] args)
    {
            int decValue = 2210;
            string bin = Convert.ToString(decValue, 2);
            string lowerbyte = bin.Substring(Math.Max(0, bin.Length - 16));

            if (lowerbyte.Length < 16)
            {
                lowerbyte = lowerbyte.PadLeft(16, '0');
            }


        Int16 circular = Convert.ToByte(CicrularLeftShift(lowerbyte, 3), 2);

            string xored = Convert.ToString((circular ^ 38556), 2).Substring(Math.Max(0, Convert.ToString((circular ^ 38556), 2).Length - 16));

            //converting final binary shift value to HEX
            string finalHex = Convert.ToString(Convert.ToInt32(xored, 2), 16).ToUpper();

        Console.WriteLine(finalHex);

    }

    private static string CicrularLeftShift(string key, int shift)
    {
        return key.Substring(shift, key.Length - shift) + key.Substring(0, shift);
    }
}

1 个答案:

答案 0 :(得分:2)

您正在尝试Convert.ToByte。

字节是8位。您在字符串中提供了一个16位数字。

如果需要单个字节,请将引用更改为16,更改为8。或者,如果你想要Int16,那么使用Convert.ToInt16。

https://msdn.microsoft.com/en-us/library/4wxkt09k(v=vs.110).aspx