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
  • 相关阅读:
    Apache ActiveMQ消息中间件的基本使用
    struts2结合生成验证码
    Python中docstring文档的写法
    Nginx+uWSGI+Django原理
    Python垃圾回收机制详解
    Python数据库连接池实例——PooledDB
    构建高可用服务端
    Python使用multiprocessing实现一个最简单的分布式作业调度系统
    python3 分布式进程(跨机器)BaseManager(multiprocessing.managers)
    python BaseManager分布式学习
  • 原文地址:https://www.cnblogs.com/GarsonZhang/p/5537241.html
Copyright © 2011-2022 走看看