我有这段代码
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")
或任何此类内容的任何内容的不重复。我相信这是一个独特的问题。
答案 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');
谢谢