.NET Ulong到二进制字符串表示?

时间:2016-11-04 18:16:17

标签: c# .net

我现在想在屏幕上打印ulong的二进制(基数2)表示(例如0000000000000000000000001,我知道没有足够的零)

我刚注意到由于某种原因,没有Convert.ToString(ulong,base)重载,这意味着我可以 long 转换为base2字符串表示,但我不能用 ulong 做同样的事情。

还有其他.net方法吗?这种方法不存在的原因是什么? (该方法适用于uint)。将它投射到长期产生相同的结果?

非常感谢=)

1 个答案:

答案 0 :(得分:4)

好吧,你可以写Convert.ToString((long)value, 2);

ulong投射到long并不会改变位模式。

我记得,没有Convert方法可以处理UInt64UInt32,因为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位。高位设置正确。