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 8072^63-1)

 大於該值的16進制全部為負數 

 8000000000000000:轉為bigint后值為 -9223372036854775808-2^63 )

負數轉換規律:超過最大值的取補碼加負號 並且-1

8000000000000001 補碼為0x7FFFFFFFFFFFFFFE 

7FFFFFFFFFFFFFFE 取負-1就可以得到轉換后的負數值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM