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)期待在内存中的相同.
| 归档时间: |
|
| 查看次数: |
6070 次 |
| 最近记录: |