将整数转换为十六进制和十六进制转换为整数

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

问题描述

所以我在 Sybase 中有这个查询(其中 signal_data 是一列),但它在 Microsoft SQL Server 中不起作用:

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

我在 Excel 中也有它(其中 A1 包含值):

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

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

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

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

推荐答案

将INT转换为十六进制:

Convert INT to hex:

SELECT CONVERT(VARBINARY(8), 16777215)

将十六进制转换为 INT:

Convert hex to INT:

SELECT CONVERT(INT, 0xFFFFFF)

2015-03-16更新

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

Update2015-03-16

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.

更多详细信息可以在 CAST and CONVERT 的二进制样式"部分中找到(Transact-SQL).我认为需要 SQL Server 2008 或更高版本.

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.

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

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Execute complex raw SQL query in EF6(在EF6中执行复杂的原始SQL查询)
Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)