Padleft字符串使用'0'

时间:2016-02-26 03:53:58

标签: c# .net padleft

我有这段代码

long num = Int64.Parse(Convert.ToString(random.Next(0, 65535), 2).PadLeft(16, '0'))

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

如果我这样做

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

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

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

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

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

2 个答案:

答案 0 :(得分:5)

您使用0填充字符串,然后转换为整数,因此当然会删除任何前导零。

000000123 == 123

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

888888123 != 123

如果您希望使用0填充数字,只需删除Int64.Parse

答案 1 :(得分:0)

您可以使用字符串代替长

string num = Convert.ToString(random.Next(0, 65535), 2).PadLeft(16, '0');

谢谢