假设我想用二进制计数,直到我拥有一组字节数所能容纳的最高数字,我该怎么做?感觉应该有很简单的方法,就是不知道。我用谷歌搜索,但很惊讶没有找到任何示例。
例如,如果我想计数到 1 个字节,我将从 00000001 开始加 1 得到 00000010,加 1 得到 00000011,等等,直到得到 11111111。
另外,你怎么能用十六进制做同样的事情呢?您从 0x00 开始,加一并输出 0x01、0x02、0x03 等,直到到达 0xFF?
此外,如何将值输出为字符串(如我的示例)?
一些伪代码:
byteSize = 3
counter = 0
while counter.size <= byteSize
print counter /* prints 00000001, 00000010, etc.
count += 1
loop
更新:
我不仅关心在另一个基地显示数字,那只是其中的一部分。我看到我的错误在于显示功能决定了数字的显示方式(正如杰里米指出的那样)。所以,这部分不是问题。
更新 2:
我保证我不是一个彻头彻尾的白痴。这是上下文:
今天我在 reddit 上读到这篇文章时就开始了: http://www.elliottkember.com/kember_identity.html
然后,这个: http://www.reddit.com/r/programming/comments/8iguu/md5_gamechallenge_for_you_reddit/
这导致了这个: http://www.olegkikin.com/md5game/
所以,我认为您可以从不同的时间间隔开始计数,然后让“呃”运行。
最佳答案
二进制
for (int i = 0; i <= byte.MaxValue; i++)
{
Console.WriteLine(Convert.ToString(i, 2).PadLeft(8, '0'));
}
十六进制
for (int i = 0; i <= byte.MaxValue; i++)
{
Console.WriteLine("0x" + i.ToString("X").PadLeft(2, '0'));
}
或
for (int i = 0; i <= byte.MaxValue; i++)
{
Console.WriteLine(Convert.ToString(i, 16).PadLeft(2, '0'));
}
多字节
int numBytes = 3;
for (int i = 0; i < Math.Pow(2, numBytes * 8); i++)
{
Console.WriteLine(Convert.ToString(i, 2).PadLeft(numBytes * 8, '0'));
}
我不会做超过 3 个,否则你要等很长时间...
响应更新:
我希望您是在开玩笑“用二进制数到 20 个字节”。那是 160 位。这会创建一个数字列表,其中某个地方的计数在整个宇宙中的原子数范围内。我希望你有足够的时间(即千年古戈尔)等待它完成:)
关于c# - 你怎么算在另一个基地?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/832822/