SQL 服务器十六进制到 BIGINT 转换

SQL Server Hex to BIGINT Conversion

我想将十六进制值转换为 BIGINT,然后再次将相同的值转换回十六进制格式,得到不同的值,但在使用以下对话方法时得到不同的结果

例如:

十六进制值:0x00000000F515C6BC

十六进制转 BIGINT:

Cast(0x00000000F515C6BC as Big int)

O/p- 4111845052

BIGINT 转 Hex-

Convert (varbinary(8),4111845052)

O/p- 0xA000001BCC615F5

PS:BIGINT 的十六进制给我结果 4111845052 但是当将相同的数字转换为十六进制格式时,它给出的输出为 0xA000001BCC615F5,这与原始值 (0x00000000F515C6BC) 不同

您需要 CAST 4111845052 作为 bigint:

select Convert (varbinary(8),cast(4111845052 as bigint))

值 4111845052 正在隐式转换为 varbinary,因为默认隐式转换为 int 是不可能的。似乎在转换为 varbinary 的函数中找到该值时,它隐式地将其转换为 varbinary,因为这是该类型的最佳指示符。您可以通过 运行 以下内容确认这一点,这将为您提供相同的结果:

select Convert (varbinary(8), 4111845052)
select Convert (varbinary(8), cast(4111845052 as varbinary))