【问题标题】:.NET Ulong to binary string representation? [duplicate].NET Ulong 到二进制字符串表示? [复制]
【发布时间】:2016-11-05 02:31:38
【问题描述】:

我现在想在屏幕上打印 ulong 的二进制(以 2 为基数)表示形式(即 0000000000000000000000001,我知道这还不够零)

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

还有其他 .net 方法可以做到这一点吗?有没有这个方法不存在的原因? (该方法适用于 uint)。将其转换为 long 会产生相同的结果吗?

非常感谢 =)

【问题讨论】:

    标签: c# .net


    【解决方案1】:

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

    ulong 转换为long 根本不会改变位模式。

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

    【讨论】:

    • 即使关闭也将初始位设置为 1,不是吗?
    • @Gaspa79:我鼓励你尝试一下并找出答案。
    • @EricLippert 我试过了,看起来就是这样,这就是我问的原因
    • @Gaspa79:你举个例子,一个 ulong 的高位关闭,转换为 long 时高位打开?
    • @EricLippert 不,我知道发生了什么。 convert 方法不会用零填充转换后的字符串。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    相关资源
    最近更新 更多