如何将不同基数的巨大数字转换为 C# 中的二进制表示形式?
How can I convert HUGE Numbers in different bases to a binary representation in C#?
我有两个号码。例如,base 8 中的 5437 和 base 256 中的 6312817211.. 如何将这两个转换为 二进制表示?我知道如何转换 5437,这很简单,但我想要一个算法来处理 both,因为我无法转换更大的数字因为它不适合 int
,它只适合 BigInteger
,我认为它没有任何内置的方法来转换 base 256 的 BigInteger
到二进制表示 (base 2)。任何建议或帮助都会很棒。脑洞大开,脑子都要炸了
(我正在使用 C# 顺便说一句)
我不知道你如何表示 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);
}
我有两个号码。例如,base 8 中的 5437 和 base 256 中的 6312817211.. 如何将这两个转换为 二进制表示?我知道如何转换 5437,这很简单,但我想要一个算法来处理 both,因为我无法转换更大的数字因为它不适合 int
,它只适合 BigInteger
,我认为它没有任何内置的方法来转换 base 256 的 BigInteger
到二进制表示 (base 2)。任何建议或帮助都会很棒。脑洞大开,脑子都要炸了
(我正在使用 C# 顺便说一句)
我不知道你如何表示 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);
}