在读取废止工商凭证序号取得数字,如: 230652215040745127565278404175305086968C# 或 SQL 使用相关函数转换成2进位会发生算术溢位错误,请问有无相关作法或function 可供参考, 谢谢。
1 个回答
0
zivzhong
iT邦研究生 4 级 ‧ 2025-02-07 15:23:54
最佳解答
C# :
using System;
using System.Numerics;
class Program
{
static void Main()
{
// 超大数字
string bigNumberStr = "230652215040745127565278404175305086968";
// 转换为 BigInteger
BigInteger bigNumber = BigInteger.Parse(bigNumberStr);
// 转换为二进位字串
string binaryString = ConvertToBinary(bigNumber);
// 输出结果
Console.WriteLine($"Decimal: {bigNumberStr}");
Console.WriteLine($"Binary: {binaryString}");
}
static string ConvertToBinary(BigInteger number)
{
return number.ToString("X"); // 转换为十六进位字串,要转其他像是 2 进位的也可以但就很长
}
}
SQL不确定,但应该大概如下:
DECLARE @bigNumber DECIMAL(38, 0) = 230652215040745127565278404175305086968;
DECLARE @binaryData VARBINARY(MAX);
-- 转换为 VARBINARY
SET @binaryData = CONVERT(VARBINARY(MAX), @bigNumber);
-- 转换为 2 进位字串
SELECT CONCAT(\'0x\', CAST(@binaryData AS VARCHAR(MAX))) AS BinaryString;