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))
我想将十六进制值转换为 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))