从无符号长整型数中提取字节
从无符号长整型数x中提取4个字节,使用左右移位及减法实现。
实现代码
typedef unsigned long packed_t;
long xbyte(packed_t lword,int bytenum);void main()
{packed_t lword=0x81729083;int bytenum; // 字节编号0~3long s[4]; for(bytenum=0;bytenum<4;bytenum++)s[bytenum]=xbyte(lword, bytenum); // 依次存放编号为0~3字节while(1);
}
long xbyte(packed_t lword,int bytenum)
{int k,n;packed_t m,temp;k=(bytenum<<3); // k=bytenum*8temp=(lword>>k)<<k; // 把lword的低k位清0n=(bytenum+1)<<3; // n=(bytenum+1)*8m=temp-((lword>>n)<<n); m>>=(bytenum<<3); //得到编号为bytenum的字节return m;
}
运行结果