如何将不同基数的HUGE数转换为C#中的二进制表示?

时间:2015-09-14 20:01:12

标签: c# binary base

我有两个号码。例如, base 8 中的5437和 base 256 中的6312817211 ..如何将这两者转换为 二进制表示 ?我知道如何转换 5437 ,这很容易,但我想要一个能够处理两者的算法,因为我无法转换更大的数字,因为它不适合int,它只适用于BigInteger我认为没有任何内置方法可以将BigInteger 基础256 转换为二进制表示( base 2)。任何建议或帮助都会很棒。我没有想法,我的大脑即将爆炸。

(我在C#btw工作)

1 个答案:

答案 0 :(得分:0)

我不知道您如何表示base256整数,但如果您已设法将它们转换为BigInteger,则可以使用这样的转换器。

static string ToBinary(BigInteger val) {
    if (val < 0) throw new ArgumentOutOfRangeException(nameof(val));
    if (val == 0) return "0";

    var bits = new List<char>();
    while (val > 0) {
        bits.Insert(0, ((val & 1) == 1) ? '1' : '0');
        val >>= 1;
    }
    return string.Concat(bits);
}