我现在想在屏幕上打印ulong的二进制(基数2)表示(例如0000000000000000000000001,我知道没有足够的零)
我刚注意到由于某种原因,没有Convert.ToString(ulong,base)重载,这意味着我可以将 long 转换为base2字符串表示,但我不能用 ulong 做同样的事情。
还有其他.net方法吗?这种方法不存在的原因是什么? (该方法适用于uint)。将它投射到长期产生相同的结果?
非常感谢=)
答案 0 :(得分:4)
好吧,你可以写Convert.ToString((long)value, 2);
将ulong
投射到long
并不会改变位模式。
我记得,没有Convert
方法可以处理UInt64
或UInt32
,因为Convert
旨在符合CLS标准,以及处理无符号的公共方法值不符合CLS。
请参阅Common Language Specification。
这不会改变位模式。考虑:
ulong foo = 0x7FFFFFFFFFFFFFFF;
Console.WriteLine(Convert.ToString((long) foo, 2));
foo = 0x8000000000000000;
Console.WriteLine(Convert.ToString((long)foo, 2));
输出结果为:
111111111111111111111111111111111111111111111111111111111111111
1000000000000000000000000000000000000000000000000000000000000000
请注意,第一行有63位。高位为0.第二行有64位。高位设置正确。