zoukankan      html  css  js  c++  java
  • SQL十进制和十六进制相互转换

    CREATE FUNCTION ufn_ConvertInt2Hex ( @Num BIGINT )
    RETURNS VARCHAR(500)
    AS
    BEGIN
    /**************************************
    -- 功能:十进制转十六进制
    -- 作者:GarsonZhang
    -- 时间:2016年5月28日13:26:55
    -- 测试:
    PRINT dbo.ufn_ConvertInt2Hex(50)
    **************************************/
    
    DECLARE @Result VARCHAR(500)
    SET @Result = ''
    WHILE ( @Num > 0 )
    BEGIN
    SET @Result = SUBSTRING('0123456789ABCDEF', @Num % 16 + 1, 1)
    + @Result
    SET @Num = @Num / 16
    END
    RETURN @Result
    END
    GO
    
    CREATE FUNCTION ufn_ConvertHex2Int ( @HexString VARCHAR(16) )
    RETURNS BIGINT
    AS /**************************************
    -- 功能:十六进制转十进制
    -- 作者:GarsonZhang
    -- 时间:2016年5月28日13:30:24
    -- 测试:
    PRINT dbo.ufn_ConvertInt2Hex(50)
    **************************************/
    BEGIN 
    DECLARE @Result BIGINT
    
    DECLARE @i INT ,
    @len INT
    
    DECLARE @power BIGINT
    SET @power = 16
    
    SELECT @i = 0 ,
    @Result = 0 ,
    @HexString = RTRIM(LTRIM(UPPER(@HexString)))
    
    SET @len = LEN(@HexString) 
    
    IF ( @len = 16 )
    BEGIN 
    IF ( ASCII(SUBSTRING(@HexString, 1, 1)) > 55 )
    BEGIN 
    -- RaisError('超出数据运算范围', 1, 16) 
    RETURN @Result
    END 
    END 
    ------------------------------------------------------- 
    WHILE ( @i < @len )
    BEGIN 
    IF ( ( SUBSTRING(@HexString, @len - @i, 1) NOT BETWEEN '0' AND '9' )
    AND ( SUBSTRING(@HexString, @len - @i, 1) NOT BETWEEN 'A' AND 'F' )
    )
    BEGIN 
    SET @Result = 0
    BREAK;
    END 
    ---------------------------------------- 
    
    SET @Result = @Result + ( CHARINDEX(SUBSTRING(@HexString,
    @len - @i, 1),
    '0123456789ABCDEF') - 1 )
    * CAST(POWER(@power, @i) AS BIGINT)
    SET @i = @i + 1 
    END 
    ---------------------------------------------- 
    RETURN @Result 
    END
    慎于行,敏于思!GGGGGG
  • 相关阅读:
    了解大数据的特点、来源与数据呈现方式
    结对项目
    第四次作业
    阅读《构建之法》1-5章有感
    iOS 应用如何完全支持 IPv6-ONLY 网络?
    丙申年把真假美猴王囚禁在容器中跑 ASP.NET Core 1.0
    ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)
    推荐一款跨平台的 Azure Storage Explorer
    更改 Skype for Business Online 的 Sip 地址以匹配UPN
    C# 计算字符串在控制台中的显示长度
  • 原文地址:https://www.cnblogs.com/GarsonZhang/p/5537241.html
Copyright © 2011-2022 走看看