这个为C#的代码。
 string szTID = "-2161622263693857431";
                long lTID = 0;
                long.TryParse(szTID, out lTID);
                lTID.ToString("X2").ToUpper();
                return;
找高手解决。

解决方案 »

  1.   

    要用数据库处理?
    转成varbinary类型不成吗?
      

  2.   

    现在要做是两个表导数据,原来的类型就是-2161622263693857431 现在要转换成16进制 E200600101F3AD69我想弄个触发器。老表里有了数据直接添加到新的表里。现在就需要这样转一下。
      

  3.   


    declare @num bigint set @num=-2161622263693857431
    select convert(varbinary, @num)
    /*
    0xE200600101F3AD69
    */
    新表用varbinary类型就自动转换了。
      

  4.   


    declare @szTID varchar(30)select @szTID='-2161622263693857431'select convert(varchar(max),convert(varbinary,cast(@szTID as bigint)),2) 'lTID'/*
    lTID
    --------------------------
    E200600101F3AD69(1 row(s) affected)
    */
      

  5.   

    一开始是这样:
    --1.一开始这么转化,但是有问题,关键在于你的这个数太大,超出了int的范围
    select cast(-2161622263693857431 as varbinary)
    /*
    0x1300000097520CFEFE9FFF1D
    */
    --2.这样就行了,转化为bigint,在转为varbianry,但是这个不是字符串,所以还是不行
    select cast(cast(-2161622263693857431 as bigint) as varbinary) 
    /*
    0xE200600101F3AD69
    */
    但是发现这样转化的是varbinary,而不是varchar,所以这里调用函数,把varbinary转化为varchar:use 你的数据库
    goIF OBJECT_ID ('dbo.varbin2hexstr') IS NOT NULL
       DROP FUNCTION dbo.varbin2hexstr
    GO
        
        
    --这个函数实现了把varbinary类型数据转化为varchar类型的数据    
    CREATE function varbin2hexstr(
    @bin varbinary(max)
    )returns varchar(max)
    as
    begin
        declare @re varchar(max),@i int
        select @re='',@i=datalength(@bin)
        while @i>0
            select @re=substring('0123456789ABCDEF',substring(@bin,@i,1)/16+1,1)
                    +substring('0123456789ABCDEF',substring(@bin,@i,1)%16+1,1)
                    +@re
                ,@i=@i-1
       -- return('0x'+@re)
        return @re
    end
        
    GO
    --3.调用函数dbo.varbin2hexstr,把varbinary转为字符串,这样才行
    select dbo.varbin2hexstr(cast(cast(-2161622263693857431 as bigint) as varbinary))
    /*
    E200600101F3AD69
    */