【问题标题】:SQL Server Hex to BIGINT ConversionSQL Server 十六进制到 BIGINT 转换
【发布时间】:2020-09-27 02:53:09
【问题描述】:

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

例如:

十六进制值:0x00000000F515C6BC

十六进制转大整数:

Cast(0x00000000F515C6BC as Big int)

O/p-4111845052

BIGINT 转十六进制-

Convert (varbinary(8),4111845052)

O/p-0xA000001BCC615F5

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

【问题讨论】:

    标签: sql sql-server sql-server-2008 sql-server-2012


    【解决方案1】:

    您需要将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))
    

    【讨论】:

    • 感谢您的回复。我试过了,但是这两个语句都得到了相同的结果。
    • select Convert (varbinary(8),cast(4111845052 as bigint)) 返回 0x00000000F515C6BC - 您的原始值。其他两个语句返回 0x0A000001BCC615F5 - 您正在查询的值。
    猜你喜欢
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多