To format/display a number to its equivalent binary form (in C#), I have always simply called:
Convert.ToString(myNumber, 2);
Today, I just realized that the .ToString() overload that I have been calling does not support values that are greater than 9223372036854775807. Note the .ToString() overload's signature is: .ToString(long, int)
. Where "long" is a 64bit signed value which max's out at 9223372036854775807.
To put it another way, using C#, when I run this:
Convert.ToString(9223372036854775808,2);
It's no surprise (due to the signature) that I receive this exception message:
The best overloaded method match for 'System.Convert.ToString(object, System.IFormatProvider)' has some invalid arguments - Argument 2: cannot convert from 'int' to 'System.IFormatProvider'
My question: Is there a .NET function that allows us to convert values greater than 9223372036854775807 to their equivalent binary format?
You can call it unsigned or signed, but its the same if you look at it bitwise!
So if you do this:
Convert.ToString((long)myNumber,2);
you would get the same bits as you would if there were ulong implementation of Convert.ToString(), and thats why there is none... ;)
Therefore, ((long)-1)
and ((ulong)-1)
looks the same in memory.