尝试使用TSQL将十六进制转换为大整数:
根据在线计算器here(十六进制到十进制),
800 0 0 0 0 0 0 0 0 0 0 0 0 0 0
必须给出结果:
63680997318088143281752740767766707563546963464218564507450892460763521488675430192536461
在SQL中我尝试:
SELECT CONVERT(BIGINT, CONVERT(VARBINARY, '800C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D507A5B8D', 2))
这给了我
-4735785797357674083
有谁知道如何在SQL中执行此操作?
根据微软的说法,bigint
类型不能提供足够的精度来支持如此大小的值:
Data type Range Storage
--------- --------------- -------
bigint -2^63 to 2^63-1 8 Bytes
这意味着你可以成功从VARBINARY
转换成BIGINT
的最高数目是9,223,372,036,854,775,807。
TSQL缺少可以表示无界整数的数字类型。您应该将VARBINARY
作为一个字节序列读入程序,并使用“宿主语言”(C,C ++,C#,Java等)的工具将该字节序列转换为大数字。