怎么将16位数字的16进制转换为10进制,并且区分正负

如何将16位数字的16进制转换为10进制,并且区分正负
如题,寻找一个16进制转换为10进制的函数,
能将‘FFFFFFFFFFFFFFFF’转换为bigint,并且带负数。
数据库为sql server 2008.

网上搜了一下,
但是要么无法转换为正确的数值,
要么计算过程报溢出,如有个例子用到了power函数,然后在数值较大时power报溢出了。




------解决思路----------------------
最高位的值=15*16的15次方,其值已超过bigint的范围.
需自行编程进行转换.

select 15*power(cast(16 as bigint),15)

消息 8115,级别 16,状态 2,第 1 行
将 expression 转换为数据类型 bigint 时出现算术溢出错误。