小编典典
转换BigInteger为十进制,十六进制,二进制,八进制字符串:
让我们从一个BigInteger值开始:
BigInteger bigint = BigInteger.Parse("123456789012345678901234567890");
基地10和基地16
内置的Base 10(十进制)和Base 16(十六进制)覆盖很容易:
// Convert to base 10 (decimal):
string base10 = bigint.ToString();
// Convert to base 16 (hexadecimal):
string base16 = bigint.ToString("X");
前导零(BigInteger正值与负值)
请注意,ToString("X")当的值为BigInteger正时,确保十六进制字符串的前导零。这与ToString("X")从禁止前导零的其他值类型转换时的通常行为不同。
例:
var positiveBigInt = new BigInteger(128);
var negativeBigInt = new BigInteger(-128);
Console.WriteLine(positiveBigInt.ToString("X"));
Console.WriteLine(negativeBigInt.ToString("X"));
结果:
080
80
此行为有一个目的,因为前导零表示该BigInteger值为正值-本质上,前导零提供了正负号。这是必要的(与其他值类型转换相反),因为a
BigInteger没有固定的大小;因此,没有指定的符号位。前导零标识一个正值,而不是负数。这允许“往返”
BigInteger值从穿出,再从穿通ToString()回去Parse()。MSDN 上的BigInteger
Structure页面上讨论了此行为。
扩展方法:BigInteger到Binary,Hex和Octal
这是一个包含扩展方法的类,用于将BigInteger实例转换为二进制,十六进制和八进制字符串:
using System;
using System.Numerics;
using System.Text;
///
/// Extension methods to convert
/// instances to hexadecimal, octal, and binary strings.
///
public static class BigIntegerExtensions
{
///
/// Converts a to a binary string.
///
/// A .
///