當前位置:首頁 » 編程語言 » sql十六進制轉字元串
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql十六進制轉字元串

發布時間: 2023-02-24 23:58:47

『壹』 sql中十六進制轉十進制語句

if exists(select * from sysobjects where name='p_zh' and type='p')
drop procere p_zh

create procere p_zh
@str varchar(10),--十六進制數
@ss int output--轉換後的十進制數
as
begin
declare @len int --十六進制數的長度
declare @st char(1) --取十六進制字元串里的字元
declare @st1 int--將取出的十六進制字元串里的字元轉換成十進制數
declare @le int --冪的值
set @ss=0
set @len=len(@str)
select @len
set @le=@len+1
while(@len>=1)
begin
set @st=substring(@str,@le-@len,1)
select @st

--判斷是什麼類的數,該怎麼轉換成十進制數
if(@st in('1','2','3','4','5','6','7','8','9','0')) set @st1=convert(int,@st)
if(@st in('A','a')) set @st1=10
if(@st in('B','b')) set @st1=11
if(@st in('C','c')) set @st1=12
if(@st in('D','d')) set @st1=13
if(@st in('E','e')) set @st1=14
if(@st in('F','f')) set @st1=15
set @len=@len-1
set @st1=@st1*power(16,@len)
set @ss=@ss+@st1
set @len=@len+1
set @len=@len-1
end
select @ss '十進制'
end

--例:
declare @sls varchar(10)
declare @ss int
set @sls='a5a8'
set @ss=0
execute p_zh @sls,@ss output
--可能有點煩,但我會的就是這個

『貳』 通過sql語句實現把如下數據轉換為可識別的字元串,應該是十六進制轉換為ASCII碼。

要看你是什麼編碼。
如果是ASC碼那麼就是8位2進制一個字元,也就是兩個十六進制位。
所以,你可以將這個十六進制字元串除0x以外,兩位一組,每一組可以使用CHAR(0x0C)的方式轉換為字元,再串加在一起就行了。
如果是UNICODE字元,那麼就是4位十六進制(16位二進制)一組進行轉換。
如第一個字元就是:select nchar(0x0C45),第二個字元就是select nchar(0x0000)

『叄』 sql 讀出來的16進制怎麼轉10進制 和

public string ConvertString(string value, int fromBase, int toBase)
{
int intValue = Convert.ToInt32(value, fromBase);
return Convert.ToString(intValue, toBase);
}
其中fromBase為原來的格式
toBase為將要轉換成的格式
------------------------------------------------------------------------------
16進制轉10進制:
int number = Convert.ToInt32("", 16);
string str = Convert.ToString(number, 10);
str就是你要10進制。
抱歉,我測試了一下,16進制的超過了UInt64.MaxValue,不能使用上面的方法,我現在不知道如何轉化了。。。
你要是找到方法了,別忘告訴我!

『肆』 如何將sql 中十六進制轉換十進制

利用SQLSERVER中的varbinary來間接實現。
16進制字元串轉10進制bigint(0-FFFFFFFFFFFFFFFF):
由於二進制比較容易轉換為bigint 所以先將字元串轉為二進制varbinary,再轉換為10進制

1
2
3
4
5
6
7
8

CREATE function [dbo].[hextoint](@s varchar(16))
returns bigint
begin
declare @result bigint
set @result=CONVERT(bigint, CONVERT(varbinary, CAST(N'0x' + @s AS char), 1))--最簡單有效的方法
return @result
END
GO

10進制轉16進制字元串(bigint正負數都可以):相同的思路目前可以將二進制varbinary轉換為字元串比較容易,那麼先將10進制轉二進制再進行16進制字元串輸出

1
2
3
4
5
6
7
8
9

CREATE function [dbo].[inttohex](@num bigint)
returns varchar(16)
begin
declare @num2 varbinary(8),@r varchar(50)
set @num2=convert(varbinary(8),@num)--直接轉換為二進制
set @r= dbo.varbin2hexstr(@num2)--二進制轉16進制字元串
return @r
end
GO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

CREATE function [dbo].[varbin2hexstr](
@bin varbinary(8000)
)returns varchar(8000)
as
begin
declare @re varchar(8000),@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

以上代碼測試環境WIN2003+SQLSERVER2008