是否有一个C#函数将64位"无符号"值格式化为其等效二进制值?

Jed*_*Jed 14 .net c# binary string-formatting

要将数字格式化/显示为等效的二进制形式(在C#中),我总是简单地调用:

Convert.ToString(myNumber, 2);
Run Code Online (Sandbox Code Playgroud)

今天,我刚刚意识到我一直在调用的.ToString()重载不支持大于9223372036854775807的值.注意.ToString()重载的签名是:.ToString(long, int).其中"long"是64位有符号值,最大值为9223372036854775807.

换句话说,使用C#,当我运行它时:

Convert.ToString(9223372036854775808,2);
Run Code Online (Sandbox Code Playgroud)

我收到此异常消息并不奇怪(由于签名):

'System.Convert.ToString(object,System.IFormatProvider)'的最佳重载方法匹配有一些无效参数 - 参数2:无法从'int'转换为'System.IFormatProvider'

我的问题:是否有.NET函数允许我们将大于9223372036854775807的值转换为等效的二进制格式?

Cip*_*ipi 26

您可以将其称为未签名或签名,但如果您按位查看它也是一样的!

所以,如果你这样做:

Convert.ToString((long)myNumber,2);
Run Code Online (Sandbox Code Playgroud)

如果有Convert.ToString()的ulong实现,你会得到相同的位,这就是为什么没有...;)

因此,((long)-1)((ulong)-1)期待在内存中的相同.