您的位置:首页 > 数据库

SQLSERVER 16进制转10进制

2014-01-02 15:39 591 查看
原码、补码、反码参考:

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就可以得到转换后的负数值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: