Posted on 2007-05-07 13:42
大大毛 閱讀(463)
評論(0) 編輯 收藏
???看到CSDN上有問的,試著做了一個存儲過程來實現它:
???問題描述是這樣的:例如整型數16646316,表示為16進制形式則是0XOOFEOOAC,最后需要實現高低位互換然后分解成4個字節數據。
輸入:
???0XOOFEOOAC
結果:
???1. OXOO
???2.?OXFE
???3.?OXOO
???4. OXAC
存儲過程實現:
Create?Procedure?p_SplitByteFromInt
@d?int,
@b1?binary(1)?output,
@b2?binary(2)?output,
@b3?binary(3)?output,
@b4?binary(4)?output
AS
Declare?@t1?smallint,@t2?smallint
Select?@t2?=?CAST(@d?As?binary(2)),@t1=CAST(CAST(@d?&?0xFFFF0000?As?binary(4))?As?binary(2))
Set?@b1?=?CAST(CAST(@t1?&?0xFF00?As?binary(2))?As?binary(1))
Set?@b2?=?CAST(@t1?As?binary(1))
Set?@b3?=?CAST(CAST(@t2?&?0xFF00?As?binary(2))?As?binary(1))
Set?@b4?=?CAST(@t2?As?binary(1))
測試代碼:
declare?@b1?binary(1),@b2?binary(1),@b3?binary(1),@b4?binary(1)
exec?p_SplitByteFromInt?16646316,@b1?output,@b2?output,@b3?output,@b4?output
select?@b1,@b2,@b3,@b4