BigInteger解析八进制字符串?

sno*_*yak 7 c# biginteger octal

在Java中,我能做到

//Parsing Octal String
BigInteger b = new BigInteger("16304103460644701340432043410021040424210140423204",8);
Run Code Online (Sandbox Code Playgroud)

然后按照我的喜好格式化它

b.toString(2); //2 for binary
b.toString(10); //10 for decimal
b.toString(16); //16 for hexadecimal
Run Code Online (Sandbox Code Playgroud)

C#BigInteger提供了上面显示的格式化功能,但我似乎无法找到解析BIIIG(大于64位,无符号)八进制值的方法.

Dou*_*las 13

这可能不是最有效的解决方案,但如果性能不是优先级,您可以BigInteger手动构建:

string s = "16304103460644701340432043410021040424210140423204";
BigInteger bi = s.Aggregate(new BigInteger(), (b, c) => b * 8 + c - '0');
Run Code Online (Sandbox Code Playgroud)

上述解决方案也适用于任何不大于10的基础; 只需8用您所需的基础替换上面的代码即可.

编辑:对于十六进制数字,您应该使用该Parse方法.0如果您的数字应该被解释为正数,那么前缀即使它的第一个字符是8- F.

string s = "0F20051C5E45F4FD68F8E58905A133BCA";
BigInteger bi = BigInteger.Parse(s, NumberStyles.HexNumber);
Run Code Online (Sandbox Code Playgroud)