c# - 你怎么算在另一个基地?

标签 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

更新:

我不仅关心在另一个基地显示数字,那只是其中的一部分。我看到我的错误在于显示功能决定了数字的显示方式(正如杰里米指出的那样)。所以,这部分不是问题。

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

相关文章:

python - 在不使用内置 bin 函数的情况下将整数转换为二进制

java - Java 十进制转二进制作业

binary - 将十进制数转换为 excess-127 表示

c# - 如何检测是否建立了新的 Wlan/Lan 连接?个人电脑

c++ - 十进制包括负到 32 位二进制转换器

c# - 付款错误 : PayPal error: Invalid request. 查看详情。 (VALIDATION_ERROR) Paypal

c# - MVC4 WebAPI 找到多个与请求匹配的操作

c - 用于解释简单指令集的程序

c# - 反汇编 C#

c# - Nethereum - 方法 eth_feeHistory 不存在或不可用