显示字符串的十六进制转储

Posted

技术标签:

【中文标题】显示字符串的十六进制转储【英文标题】:Show hexadecimal dump of string 【发布时间】:2011-04-13 15:53:46 【问题描述】:

有没有办法在 SQL Server 中获取字符串的十六进制转储?对字符集和排序规则问题进行故障排除会很有用。

mysql 中您可以使用 SELECT HEX('€uro'),在 Oracle 中您可以使用 SELECT DUMP('€uro') FROM DUAL

【问题讨论】:

【参考方案1】:
SELECT CAST('€uro' AS VARBINARY(4))

返回

  0x8075726F

在我的默认排序规则上。

编辑。 刚刚注意到Unicode标签

SELECT CAST(N'€uro' AS VARBINARY(8))

返回

 0xAC20750072006F00

【讨论】:

可爱!你知道字节顺序取决于什么吗?挑剔,我更喜欢20AC 而不是AC20,但无论如何我想确定预期的顺序。 @Álvaro - 不,恐怕我不知道答案。 @Álvaro:这有点邪恶,我想对于使用更高平面 Unicode 字形的字符串可能会失败,但它似乎满足您的字节顺序要求:SELECT SUBSTRING(CAST(CAST (0xFEFF + SUBSTRING(CAST(CAST(@v as XML) as VARBINARY(MAX)),3,DATALENGTH(CAST(@v as XML))-2) AS XML) AS VARBINARY(MAX)),3,DATALENGTH( CAST(@v 作为 XML))-2)

以上是关于显示字符串的十六进制转储的主要内容,如果未能解决你的问题,请参考以下文章

如何在bash中创建仅包含十六进制字符而不包含空格的文件的十六进制转储?

解析ASCII十六进制转储以正确转换为二进制

如何获取可执行文件的字符串转储?

从磁盘转储中提取 jpeg

如何获取结构数据的十六进制转储

Visual Studio 调试 - 将数组转储到文件