SQLSERVER 16进制转10进制

原码、补码、反码参考:

http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html

进制转换参考:

http://www.cnblogs.com/xugang/archive/2012/10/22/2733593.html

负数转换为16进制

http://blog.csdn.net/xiaochunyong/article/details/7616625

--16进制数"0x7FFFFFFFFFFFFFFF "转化为进制

select CONVERT(bigint,cast(0x7FFFFFFFFFFFFFFF as varbinary)) as converted

经验证:可以直接给bigint赋值16进制格式 输出时直接输出为转换后的10进制格式,如下所示

declare @temp bigint=0x80753903004B1200

select @temp

Bigint取值范围

bigint-2^63 (-9,223,372,036,854,775,808) 至 2^63-1 (9,223,372,036,854,775,807). 存储大小为8个字节.

假设16进制字符长度为16 如下所示16进制字符串范围

FFFFFFFFFFFFFFFF-0

7FFFFFFFFFFFFFFF:十进制为9 223 372 036 854 775 807(2^63-1)

大于该值的16进制全部为负数

8000000000000000:转为bigint后值为 -9223372036854775808(-2^63 )

负数转换规律:超过最大值的取补码加负号 并且-1

8000000000000001 补码为0x7FFFFFFFFFFFFFFE

7FFFFFFFFFFFFFFE 取负-1就可以得到转换后的负数值。

上一篇:【Azure 应用服务】App Service 通过配置web.config来添加请求返回的响应头(Response Header)


下一篇:poj 3207 2-SAT问题