将BigInteger小数转换为二进制,且所有前导零

时间:2019-06-01 00:09:21

标签: c# biginteger

我有下面的代码来转换String ex。 “ 0000010100000101”为BigInteger类型的十进制数。现在,我想将十进制数转换回二进制,其结果应该与所有前导零相同的第一个String相同。我希望您可以使用从二进制转换为十进制的相同方法,因为它超级快,因为我将真正使用的二进制与十进制非常相同。

二进制字符串可以是任何东西,并且应该回到原来的样子。

BigInteger Decimalvalue = 0;  
string binaryAsString = "0000010100000101";

int numOfBytes = binaryAsString.Length / 8;
if ((binaryAsString.Length % 8) != 0)
numOfBytes++;
byte[] bytes = new byte[numOfBytes];
for (int i = 1; i <= numOfBytes; ++i)
{
    int start = binaryAsString.Length - i * 8;
    int length = 8;
    if (start < 0)
    {
        length += start;
        start = 0;
    }
    bytes[numOfBytes - i] = Convert.ToByte(binaryAsString.Substring(start, length), 2);
}

Decimalvalue = new BigInteger(bytes.Concat(new byte[] { 0 }).ToArray());

Console.WriteLine("Decimal value = ");
Console.WriteLine(Decimalvalue);

我希望从Decimalvalue进行转换将返回原始的二进制字符串“ 0000010100000101”。

0 个答案:

没有答案