在读取废止工商凭证序号取得数字,如: 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;