Posted on 2007-05-07 13:42 
大大毛 阅读(473) 
评论(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