使用'0'的Padleft字符串

Tim*_*mmy 0 .net c# padleft

我有这段代码

long num = Int64.Parse(Convert.ToString(random.Next(0, 65535), 2).PadLeft(16, '0'))
Run Code Online (Sandbox Code Playgroud)

使用此代码时,字符串不会使用前导零填充.我不确定,但我的猜测是,当字符串被解析时,它会从某种原因删除前导零?

如果我做这样的事情

long num = Int64.Parse(Convert.ToString(random.Next(0, 65535), 2).PadLeft(16, '8'))
Run Code Online (Sandbox Code Playgroud)

或者任何非零的数字,它将正确地输出到带有前导8的16位数字.

为什么会发生这种情况有一个很好的解释?

还有一个快速简单的解决方案吗?

不是任何使用int.ToString("D16")或任何类型的重复.我相信这是一个独特的问题.

Ste*_*eve 5

你用一个字符串填充0,然后转换为一个整数,所以当然任何前导零都将被删除.

IE浏览器.

000000123 == 123
Run Code Online (Sandbox Code Playgroud)

在填充8作品时,因为您正在创建一个新数字:

888888123 != 123
Run Code Online (Sandbox Code Playgroud)

如果你想要填充数字0,只需删除Int64.Parse.