将整数转换为十六进制和十六进制整数 [英] Convert integer to hex and hex to integer

查看:145
本文介绍了将整数转换为十六进制和十六进制整数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,我在Sybase中使用此查询(其中 signal_data 是一列),但它在Microsoft SQL Server中不起作用:

  HEXTOINT(SUBSTRING((INTTOHEX(signal_data)),5,2))as Signal 

我也在Excel中使用它(其中 A1 包含该值):

  = HEX2DEC(LEFT(DEC2HEX(A1),LEN(DEC2HEX(A1)) -  2))

有人知道我会如何在SQL Server中执行此操作吗?

解决方案

将INT转换为十六进制:

  SELECT CONVERT(VARBINARY(8),16777215)

将十六进制转换为INT:

  SELECT CONVERT (INT,0xFFFFFF)

请参阅 http://classicasp.aspfaq.com/general/how-do-i-convert- from-hex-to-int-and-back.html



更新2015-0 3-16(by Oskar Berggren)



上面的例子有一个局限性,它只有在十六进制值以整数字面量给出时才起作用。为了完整起见,如果要转换的值是十六进制字符串(例如在varchar列中找到),请使用:

   -  If '0x'标记出现:
SELECT CONVERT(INT,CONVERT(VARBINARY,'0x1FFFFF',1))

- 如果'0x'标记不存在:
SELECT CONVERT(INT,CONVERT(VARBINARY,'1FFFFF',2))

注意:该字符串必须包含偶数的十六进制数字。奇数个数字会产生错误。

更多详细信息可以在 CAST和CONVERT(Transact-SQL)。我相信SQL Server 2008或更高版本是必需的。


So I have this query working (where signal_data is a column) in Sybase but it doesn't work in Microsoft SQL Server:

HEXTOINT(SUBSTRING((INTTOHEX(signal_data)),5,2)) as Signal

I also have it in Excel (where A1 contains the value):

=HEX2DEC(LEFT(DEC2HEX(A1),LEN(DEC2HEX(A1))-2))

Does anyone know how I would do this in SQL Server?

解决方案

Convert INT to hex:

SELECT CONVERT(VARBINARY(8), 16777215)

Convert hex to INT:

SELECT CONVERT(INT, 0xFFFFFF)

See http://classicasp.aspfaq.com/general/how-do-i-convert-from-hex-to-int-and-back.html

Update 2015-03-16 (by Oskar Berggren)

The above example has the limitation that it only works when the HEX value is given as an integer literal. For completeness, if the value to convert is a hexadecimal string (such as found in a varchar column) use:

-- If the '0x' marker is present:
SELECT CONVERT(INT, CONVERT(VARBINARY, '0x1FFFFF', 1))

-- If the '0x' marker is NOT present:
SELECT CONVERT(INT, CONVERT(VARBINARY, '1FFFFF', 2))

Note: The string must contain an even number of hex digits. An odd number of digits will yield an error.

More details can be found in the "Binary Styles" section of CAST and CONVERT (Transact-SQL). I believe SQL Server 2008 or later is required.

这篇关于将整数转换为十六进制和十六进制整数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆