最近在一個檔案看到的ascii表示的密碼,
想問一下大佬們 1234567890 把每個字符轉換十六進制后 和檔案中的313331373133313F3139表示的1234567890不一樣。這是為什么呢?
相應的還有admin,檔案里用61656F6A6A表示,而把這串ascii轉成字符 是aeojj。a111用6A303030表示。
感覺每個字符放到字串里的位置不同,ascii碼也不同了。希望有大佬解答一下,萬分感謝!
uj5u.com熱心網友回復:
demo:
declare @ValStr varchar(max) ='1234567890'
declare @Val varbinary(8)
set @Val = cast(@ValStr as varbinary(max)) --轉換為二進制
-- select @Val
--二進制轉十六進制
declare @re varchar(max),
@i int
select @re ='',@i =datalength(@Val)
while @i>0
begin
select @re=substring('0123456789ABCDEF',substring(@Val,@i,1)/16+1,1)
+substring('0123456789ABCDEF',substring(@Val,@i,1)%16+1,1)
+@re
,@i=@i-1
end
---------------------------------------------------------------------------------
select @re
注意,傳入的值,是varchar(max),而非bigint。先轉二進制,再做十六進制轉換。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/278690.html
標籤:疑難問題
上一篇:禿啦禿啦