你怎么算在另一个基地?

sco*_*ttm 1 c# binary

假设我想用二进制计算,直到我有一个设定的字节数最高的数字,我怎么能这样做?感觉应该有一个非常简单的方式,我只是不知道它.我用谷歌搜索,但很惊讶没有找到任何例子.

例如,如果我想要计数到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指出的那样).所以,这部分不是问题.

更新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/

所以,我认为你可以从不同的时间间隔开始计算比特,然后让我们运行.

Joh*_*sch 6

二进制

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位.这会创建一个数字列表,其中包含整个宇宙中原子数范围内计数.我希望你有足够的时间(即千年谷歌)等待完成:)


Jer*_*ten 5

您正在"计算"的基础完全取决于将数字输出到屏幕的功能(或在执行此操作之前将其转换为字符串).不同的基础只是视觉上表示相同数字的不同方式.因此,要以二进制"计数",您只需告诉您的数字到字符串函数使用基数2而不是默认基数10.