假设我想用二进制计算,直到我有一个设定的字节数最高的数字,我怎么能这样做?感觉应该有一个非常简单的方式,我只是不知道它.我用谷歌搜索,但很惊讶没有找到任何例子.
例如,如果我想要计数到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
Run Code Online (Sandbox Code Playgroud)
我不仅关心在另一个基地显示一个数字,这只是其中的一部分.我看到我的错误,因为显示功能决定了数字的显示方式(正如Jeremy指出的那样).所以,这部分不是问题.
我保证我不是一个完整的白痴.以下是上下文:
它开始于今天我在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'));
}
Run Code Online (Sandbox Code Playgroud)
for (int i = 0; i <= byte.MaxValue; i++)
{
Console.WriteLine("0x" + i.ToString("X").PadLeft(2, '0'));
}
Run Code Online (Sandbox Code Playgroud)
要么
for (int i = 0; i <= byte.MaxValue; i++)
{
Console.WriteLine(Convert.ToString(i, 16).PadLeft(2, '0'));
}
Run Code Online (Sandbox Code Playgroud)
int numBytes = 3;
for (int i = 0; i < Math.Pow(2, numBytes * 8); i++)
{
Console.WriteLine(Convert.ToString(i, 2).PadLeft(numBytes * 8, '0'));
}
Run Code Online (Sandbox Code Playgroud)
我不会超过3,或者你会等很长时间......
我希望你开玩笑说"计算二进制20字节".这是160位.这会创建一个数字列表,其中包含整个宇宙中原子数范围内的计数.我希望你有足够的时间(即千年谷歌)等待完成:)
您正在"计算"的基础完全取决于将数字输出到屏幕的功能(或在执行此操作之前将其转换为字符串).不同的基础只是视觉上表示相同数字的不同方式.因此,要以二进制"计数",您只需告诉您的数字到字符串函数使用基数2而不是默认基数10.