長度65個或更多的二進制數轉換爲十進制/無論你必須寫一個方法是這樣的:
public BigInteger FromBinaryString(string binary)
{
if (binary == null)
throw new ArgumentNullException();
if (!binary.All(c => c == '0' || c == '1'))
throw new InvalidOperationException();
BigInteger result = 0;
foreach (var c in binary)
{
result <<= 1;
result += (c - '0');
}
return result;
}
它採用System.Numerics.BigInteger
結構以容納大的數字。然後,你可以明確地將其轉換爲decimal
(或字節數組),並將其存儲在數據庫中:
var bigInteger = FromBinaryString("100000000000000000000000000000000000000000000000000000000000000000");
// to decimal
var dec = (decimal)bigInteger;
// to byte array
var data = bigInteger.ToByteArray();
編輯:如果你在.NET 3.5,只是使用的decimal
代替BigInteger
(也更換左移位運算符<<
與小數乘法運算*
):
public decimal FromBinaryString(string binary)
{
if (binary == null)
throw new ArgumentNullException();
if (!binary.All(c => c == '0' || c == '1'))
throw new InvalidOperationException();
decimal result = 0;
foreach (var c in binary)
{
result *= 2;
result += (c - '0');
}
return result;
}
你可以將其存儲在數據庫中的字符串,然後你拉從數據庫中的值後執行您的邏輯。 –
感謝您的回覆,但我無法直接將其存儲在數據庫中。有一些進一步的處理,我需要將其轉換爲十進制。 – ABC