1

我有这段代码

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'))

或任何不为零的数字,它将正确输出为 16 位数字,前导 8。

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

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

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

4

2 回答 2

5

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

IE。

000000123 == 123

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

888888123 != 123

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

于 2016-02-26T03:55:59.973 回答
1

您可以使用字符串而不是长

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

谢谢

于 2019-08-28T07:26:08.400 回答