如何将sql 中十六进制转换十进制

如何将sql 中十六进制转换十进制,第1张

select Convert(int,0xF)                             --15

select Convert(numeric(18,2),0x030100017D000000)    --12.50

--10进制转换为2,8,16进制

Create Function DecTox(@A int,@Type Varchar(3))

Returns Varchar(100)

As

Begin

   --从右到左,每一位乘上基数的i-1次方此携闷的和

   Declare @Rst varchar(100)=''   --保存结果

   Declare @JS int            森弯 --转换基数

   Declare @YS int             --余数

        

   Set @JS=Case @Type 

           When 'Bin' Then 2   

           When 'Ocx' Then 8

           When 'Hex' Then 16

           Else Null End

 

   While @A>0

   Begin

      Set @YS=@A%@JS

      Set @Rst=Case @YS

        When 10 Then 'A'

        When 11 Then 'B'      

        When 12 Then 'C'

        When 13 Then 'D'

         When 14 Then 'E'

        When 15 Then 'F'

        Else Convert(Varchar(2),@YS)

        End+@Rst

      Set @A=Convert(int,@A/@JS)  

   End     

   return @Rst   

End

--2,8,16进制转换为10进制

Create Function fn_xToDec1(@A Varchar(50),@Type Varchar(3))

Returns int

As

Begin

   --从右到左,每一位乘上基数的i-1次方的和

   Declare @Rst int=0          --保存结果

   Declare @JS int             --转换基数

   Declare @I int              --字符串位置

   Declare @J int              

   Set @JS=Case @Type 

           When 'Bin' Then 2   

           When 'Ocx' Then 8

  隐吵         When 'Hex' Then 16

           Else Null End

   Set @I=Len(@A)              --从最后一个开始向前截取

   Set @J=0

        

   While @I>0

   Begin

      Set @Rst=@Rst+Case substring(@A,@I,1) 

        When 'A' Then 10

        When 'B' Then 11

        When 'C' Then 12

        When 'D' Then 13

        When 'E' Then 14

        When 'F' Then 15 

        Else substring(@A,@I,1) 

        End*power(@JS,@J)

      Set @J=@J+1

      Set @I=@I-1 

   End     

   return @Rst   

End

读告型腊出并生成图片到物理位置

public void Read()

{

byte[] MyData = new byte[0]

using (SqlConnection conn = new SqlConnection(sqlconnstr))

{

conn.Open()

SqlCommand cmd = new SqlCommand()

cmd.Connection = conn

cmd.CommandText = "select * from T_img"

SqlDataReader sdr = cmd.ExecuteReader()

sdr.Read()

MyData = (byte[])sdr["ImgFile"]//读取租旦第一个图片的位流

int ArraySize= MyData.GetUpperBound(0)//获得数据库中存储的位流数组的维度上限,用作读取流的上限

FileStream fs = new FileStream(@"c:\00.jpg", FileMode.OpenOrCreate, FileAccess.Write)

fs.Write(MyData, 0, ArraySize)

fs.Close() //-- 写入到c:\00.jpg。

conn.Close()

Console.WriteLine("读取成功")//查看硬盘上的文袜滑件

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12123141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存