69,371
社区成员
发帖
与我相关
我的任务
分享
int swap32_1(int i)
{
return ((i&0xff000000)>>24)|((i&0xff0000)>>8)|((i&0xff00)<<8)|((i&0xff)<<24);
}
int swap(int x)
{
int out,i;
char *p_in=(char*)&x,*p_out=(char*)&out;
while (i<sizeof(int))
p_out[i++]=p_in[sizeof(int)-1-i];/*赋值运算先算右面,所以要把i++放在左面*/
return out;
}
int bswap(int x)
{
int ret;
/*psrc指向x首字节,pdst指向ret之后*/
char *psrc=(char*)&x,*pdst=(char*)(&ret+1);
while(pdst>(char*)&ret)
*--pdst=*psrc++;
return ret;
}
main()
{
int a=0x12345678;
printf("a=%x\n",a);
a=swap32_1(a);
printf("swap32_1--->%x\n",a);
a=0x12345678;
a=swap(a);
printf("swap--->%x\n",a);
a=0x12345678;
a=bswap(a);
printf("bswap--->%x",a);
}
int byte_swap32(int i)
{
return ((i&0xff000000)>>24)|((i&0xff0000)>>8)|((i&0xff00)<<8)|((i&0xff)<<24);
}
int byte_swap1(int in)
{
int out,i=0;
char *p_in=(char*)&in,*p_out=(char*)&out;
while (i<sizeof(int))
p_out[i++]=p_in[sizeof(int)-1-i];/*赋值运算先算右面,所以要把i++放在左面,注意c4droid却是相反的*/
return out;
}
int byte_swap2(int in)
{
int ret;
/*psrc指向in首字节,pdst指向ret之后*/
char *psrc=(char*)&in,*pdst=(char*)(&ret+1);
while(pdst>(char*)&ret)
*--pdst=*psrc++;
return ret;
}
unsigned byte_swap3(unsigned in)
{
unsigned out=0,byte_num=sizeof(in);
while(byte_num--)
{
out |= (in & 0xff)<<byte_num*8;
in >>= 8;
}
return out;
}
int halfbyte_swap32(int i)
{
return ((i&0xf0000000)>>28)|((i&0xf000000)>>20)|((i&0xf00000)>>12)|((i&0xf0000)>>4)|((i&0xf000)<<4|((i&0xf00)<<12)|((i&0xf0)<<20|((i&0xf)<<28)));
}
int halfbyte_swap1(int in)
{
int out,i=0;
char *p_in=(char*)&in,*p_out=(char*)&out;
while (i<sizeof(int))
p_out[i++]=(p_in[sizeof(int)-1-i]<<4)|(p_in[sizeof(int)-1-i]>>4);/*赋值运算先算右面,所以要把i++放在左面,注意c4droi却是相反的*/
return out;
}
int halfbyte_swap2(int in)
{
int ret;
/*psrc指向in首字节,pdst指向ret之后*/
char *psrc=(char*)&in,*pdst=(char*)(&ret+1);
while(pdst>(char*)&ret)
{
*--pdst=(*psrc<<4)|(*psrc>>4);
psrc++;
}
return ret;
}
unsigned halfbyte_swap3(unsigned in)
{
unsigned out=0,byte_num=sizeof(in)*(8/4);
while(byte_num--)
{
out |= (in & 0xf)<<byte_num*4;
in >>= 4;
}
return out;
}
int bit_swap1(int in)
{
int bit_num=sizeof(in)*8,out=0;
while(bit_num)
{
if (in&(1<<(bit_num-1)))
{
out|=(1<<(sizeof(in)*8-bit_num));
}
bit_num--;
}
return out;
}
unsigned bit_swap2(unsigned in)
{
unsigned bit_num=sizeof(in)*8,out=0;
while(bit_num--)
{
out |= (in & 1)<<bit_num;
in >>= 1;
}
return out;
}
unsigned bit_swap3(unsigned in)
{
in = ((in>>16) & 0x0000ffff) | ((in<<16) & 0xffff0000);
in = ((in>>8) & 0x00ff00ff) | ((in<<8) & 0xff00ff00);
in = ((in>>4) & 0x0f0f0f0f) | ((in<<4) & 0xf0f0f0f0);
in = ((in>>2) & 0x33333333) | ((in<<2) & 0xcccccccc);
in = ((in>>1) & 0x55555555) | ((in<<1) & 0xaaaaaaaa);
return in;
}
char char_bit_swap(char in)
{
return (in&0x80)>>7|(in&0x40)>>5|(in&0x20)>>3|(in&0x10)>>1|(in&0x8)<<1|(in&0x4)<<3|(in&0x2)<<5|(in&0x1)<<7;
}
main()
{
int a=0x12345678;
char c=0xc1;
printf("a=%x\n",a);
printf("byte_swap32--->%x\n",byte_swap32(a));
printf("byte_swap1---->%x\n",byte_swap1(a));
printf("byte_swap2--->%x\n",byte_swap2(a));
printf("byte_swap3--->%x\n\n",byte_swap3(a));
printf("halfbyte_swap32--->%x\n",halfbyte_swap32(a));
printf("halfbyte_swap1---->%x\n",halfbyte_swap1(a));
printf("halfbyte_swap2--->%x\n",halfbyte_swap2(a));
printf("halfbyte_swap3--->%x\n\n",halfbyte_swap3(a));
printf("bit_swap1--->%x\n",bit_swap1(a));
printf("bit_swap2--->%x\n",bit_swap2(a));
printf("bit_swap3--->%x\n\n",bit_swap3(a));
printf("char c=0x%x\n",c);
printf("char_bit_swap=0x%x",char_bit_swap(c));
}
int byte_swap32(int i)
{
return ((i&0xff000000)>>24)|((i&0xff0000)>>8)|((i&0xff00)<<8)|((i&0xff)<<24);
}
int byte_swap1(int in)
{
int out,i=0;
char *p_in=(char*)&in,*p_out=(char*)&out;
while (i<sizeof(int))
p_out[i++]=p_in[sizeof(int)-1-i];/*赋值运算先算右面,所以要把i++放在左面,注意c4droid却是相反的*/
return out;
}
int byte_swap2(int in)
{
int ret;
/*psrc指向in首字节,pdst指向ret之后*/
char *psrc=(char*)&in,*pdst=(char*)(&ret+1);
while(pdst>(char*)&ret)
*--pdst=*psrc++;
return ret;
}
unsigned byte_swap3(unsigned in)
{
unsigned out=0,byte_num=sizeof(in);
while(byte_num--)
{
out |= (in & 0xff)<<byte_num*8;
in >>= 8;
}
return out;
}
int halfbyte_swap32(int i)
{
return ((i&0xf0000000)>>28)|((i&0xf000000)>>20)|((i&0xf00000)>>12)|((i&0xf0000)>>4)|((i&0xf000)<<4|((i&0xf00)<<12)|((i&0xf0)<<20|((i&0xf)<<28)));
}
int halfbyte_swap1(int in)
{
int out,i=0;
char *p_in=(char*)&in,*p_out=(char*)&out;
while (i<sizeof(int))
p_out[i++]=(p_in[sizeof(int)-1-i]<<4)|(p_in[sizeof(int)-1-i]>>4);/*赋值运算先算右面,所以要把i++放在左面,注意c4droi却是相反的*/
return out;
}
int halfbyte_swap2(int in)
{
int ret;
/*psrc指向in首字节,pdst指向ret之后*/
char *psrc=(char*)&in,*pdst=(char*)(&ret+1);
while(pdst>(char*)&ret)
{
*--pdst=(*psrc<<4)|(*psrc>>4);
psrc++;
}
return ret;
}
unsigned halfbyte_swap3(unsigned in)
{
unsigned out=0,byte_num=sizeof(in)*(8/4);
while(byte_num--)
{
out |= (in & 0xf)<<byte_num*4;
in >>= 4;
}
return out;
}
int bit_swap1(int in)
{
int bit_num=sizeof(in)*8,out=0;
while(bit_num)
{
if (in&(1<<(bit_num-1)))
{
out|=(1<<(sizeof(in)*8-bit_num));
}
bit_num--;
}
return out;
}
unsigned bit_swap2(unsigned in)
{
unsigned bit_num=sizeof(in)*8,out=0;
while(bit_num--)
{
out |= (in & 1)<<bit_num;
in >>= 1;
}
return out;
}
unsigned bit_swap3(unsigned in)
{
in = ((in>>16) & 0x0000ffff) | ((in<<16) & 0xffff0000);
in = ((in>>8) & 0x00ff00ff) | ((in<<8) & 0xff00ff00);
in = ((in>>4) & 0x0f0f0f0f) | ((in<<4) & 0xf0f0f0f0);
in = ((in>>2) & 0x33333333) | ((in<<2) & 0xcccccccc);
in = ((in>>1) & 0x55555555) | ((in<<1) & 0xaaaaaaaa);
return in;
}
char char_bit_swap(char in)
{
return (in&0x80)>>7|(in&0x40)>>5|(in&0x20)>>3|(in&0x10)>>1|(in&0x8)<<1|(in&0x4)<<3|(in&0x2)<<5|(in&0x1)<<7;
}
main()
{
int a=0x12345678;
char c=0xc1;
printf("a=%x\n",a);
printf("byte_swap32--->%x\n",byte_swap32(a));
printf("byte_swap1---->%x\n",byte_swap1(a));
printf("byte_swap2--->%x\n",byte_swap2(a));
printf("byte_swap3--->%x\n\n",byte_swap3(a));
printf("halfbyte_swap32--->%x\n",halfbyte_swap32(a));
printf("halfbyte_swap1---->%x\n",halfbyte_swap1(a));
printf("halfbyte_swap2--->%x\n",halfbyte_swap2(a));
printf("halfbyte_swap3--->%x\n\n",halfbyte_swap3(a));
printf("bit_swap1--->%x\n",bit_swap1(a));
printf("bit_swap2--->%x\n",bit_swap2(a));
printf("bit_swap3--->%x\n\n",bit_swap3(a));
printf("char c=0x%x\n",c);
printf("char_bit_swap=0x%x",char_bit_swap(c));
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int v;
int bitrev1(const int b) {
register int n;
n=b;
n=((n>> 1)&0x55555555)|((n<< 1)&0xaaaaaaaa);
n=((n>> 2)&0x33333333)|((n<< 2)&0xcccccccc);
n=((n>> 4)&0x0f0f0f0f)|((n<< 4)&0xf0f0f0f0);
n=((n>> 8)&0x00ff00ff)|((n<< 8)&0xff00ff00);
n=((n>>16)&0x0000ffff)|((n<<16)&0xffff0000);
return n;
}
int bitrev2(const int b) {
__asm {
push ebx
push ecx
mov ebx,b
mov ecx,32
nextbit:
rcl ebx,1
rcr eax,1
loop nextbit
pop ecx
pop ebx
}
}
int bitrev3(const int b) {
char bs[33],bs1[33],*ep;
itoa(b,bs1,2);
sprintf(bs,"%032s",bs1);
strrev(bs);
return strtol(bs,&ep,2);
}
void main() {
v=0x12345678;//0001 0010 0011 0100 0101 0110 0111 1000
printf("%08x\n",bitrev1(v));
printf("%08x\n",bitrev2(v));
printf("%08x\n",bitrev3(v));
}
//1e6a2c48
//1e6a2c48
//1e6a2c48
int byte_swap32(int i)
{
return ((i&0xff000000)>>24)|((i&0xff0000)>>8)|((i&0xff00)<<8)|((i&0xff)<<24);
}
int byte_swap1(int in)
{
int out,i=0;
char *p_in=(char*)&in,*p_out=(char*)&out;
while (i<sizeof(int))
p_out[i++]=p_in[sizeof(int)-1-i];/*赋值运算先算右面,所以要把i++放在左面*/
return out;
}
int byte_swap2(int in)
{
int ret;
/*psrc指向in首字节,pdst指向ret之后*/
char *psrc=(char*)&in,*pdst=(char*)(&ret+1);
while(pdst>(char*)&ret)
*--pdst=*psrc++;
return ret;
}
int halfbyte_swap32(int i)
{
return ((i&0xf0000000)>>28)|((i&0xf000000)>>20)|((i&0xf00000)>>12)|((i&0xf0000)>>4)|((i&0xf000)<<4|((i&0xf00)<<12)|((i&0xf0)<<20|((i&0xf)<<28)));
}
int halfbyte_swap1(int in)
{
int out,i=0;
char *p_in=(char*)&in,*p_out=(char*)&out;
while (i<sizeof(int))
p_out[i++]=(p_in[sizeof(int)-1-i]&0xf)<<4|(p_in[sizeof(int)-1-i]&0xf0)>>4;/*赋值运算先算右面,所以要把i++放在左面*/
return out;
}
int halfbyte_swap2(int in)
{
int ret;
/*psrc指向in首字节,pdst指向ret之后*/
char *psrc=(char*)&in,*pdst=(char*)(&ret+1);
while(pdst>(char*)&ret)
{
*--pdst=(*psrc&0xf)<<4|(*psrc&0xf0)>>4;
psrc++;
}
return ret;
}
int int_bit_swap(int in)
{
int bit_num=sizeof(in)*8,out=0;
while(bit_num)
{
if (in&(1<<(bit_num-1)))
{
out|=(1<<(sizeof(in)*8-bit_num));
}
bit_num--;
}
return out;
}
char char_bit_swap(char in)
{
return (in&0x80)>>7|(in&0x40)>>5|(in&0x20)>>3|(in&0x10)>>1|(in&0x8)<<1|(in&0x4)<<3|(in&0x2)<<5|(in&0x1)<<7;
}
main()
{
int a=0x12345678,b=a;
char c=0xc1;
printf("a=%x\n",a);
a=byte_swap32(a);
printf("byte_swap32--->%x\n",a);
a=b;
a=byte_swap1(a);
printf("byte_swap1--->%x\n",a);
a=b;
a=byte_swap2(a);
printf("byte_swap2--->%x\n\n",a);
a=b;
printf("a=%x\n",a);
a=halfbyte_swap32(a);
printf("halfbyte_swap32--->%x\n",a);
a=b;
a=halfbyte_swap1(a);
printf("halfbyte_swap1--->%x\n",a);
a=b;
a=halfbyte_swap2(a);
printf("halfbyte_swap2--->%x\n",a);
a=b;
a=int_bit_swap(a);
printf("int_bit_swap--->%x\n",a);
printf("char c=0x%x\n",c);
c=char_bit_swap(c);
printf("char_bit_swap=0x%x",c);
}
int swap32_1(int i)
{
return ((i&0xff000000)>>24)|((i&0xff0000)>>8)|((i&0xff00)<<8)|((i&0xff)<<24);
}
int swap1(int in)
{
int out,i=0;
char *p_in=(char*)&in,*p_out=(char*)&out;
while (i<sizeof(int))
p_out[i++]=p_in[sizeof(int)-1-i];/*赋值运算先算右面,所以要把i++放在左面*/
return out;
}
int bswap1(int in)
{
int ret;
/*psrc指向in首字节,pdst指向ret之后*/
char *psrc=(char*)&in,*pdst=(char*)(&ret+1);
while(pdst>(char*)&ret)
*--pdst=*psrc++;
return ret;
}
int swap32_2(int i)
{
return ((i&0xf0000000)>>28)|((i&0xf000000)>>20)|((i&0xf00000)>>12)|((i&0xf0000)>>4)|((i&0xf000)<<4|((i&0xf00)<<12)|((i&0xf0)<<20|((i&0xf)<<28)));
}
int swap2(int in)
{
int out,i=0;
char *p_in=(char*)&in,*p_out=(char*)&out;
while (i<sizeof(int))
p_out[i++]=(p_in[sizeof(int)-1-i]&0xf)<<4|(p_in[sizeof(int)-1-i]&0xf0)>>4;/*赋值运算先算右面,所以要把i++放在左面*/
return out;
}
int bswap2(int in)
{
int ret;
/*psrc指向in首字节,pdst指向ret之后*/
char *psrc=(char*)&in,*pdst=(char*)(&ret+1);
while(pdst>(char*)&ret)
{
*--pdst=(*psrc&0xf)<<4|(*psrc&0xf0)>>4;
psrc++;
}
return ret;
}
main()
{
int a=0x12345678;
printf("a=%x\n",a);
a=0x12345678;
a=bswap1(a);
printf("bswap1--->%x\n",a);
a=0x12345678;
a=swap1(a);
printf("swap1--->%x\n",a);
a=0x12345678;
a=swap32_1(a);
printf("swap32_1--->%x\n\n",a);
a=0x12345678;
printf("a=%x\n",a);
a=bswap2(a);
printf("bswap2--->%x\n",a);
a=0x12345678;
a=swap2(a);
printf("swap2--->%x\n",a);
a=0x12345678;
a=swap32_2(a);
printf("swap32_2--->%x\n",a);
}
int swap32_1(int i)
{
return ((i&0xff000000)>>24)|((i&0xff0000)>>8)|((i&0xff00)<<8)|((i&0xff)<<24);
}
int swap(int x)
{
int out,i=0;
char *p_in=(char*)&x,*p_out=(char*)&out;
while (i<sizeof(int))
p_out[i++]=p_in[sizeof(int)-1-i];/*赋值运算先算右面,所以要把i++放在左面*/
return out;
}
int bswap(int x)
{
int ret;
/*psrc指向x首字节,pdst指向ret之后*/
char *psrc=(char*)&x,*pdst=(char*)(&ret+1);
while(pdst>(char*)&ret)
*--pdst=*psrc++;
return ret;
}
main()
{
int a=0x12345678;
printf("a=%x\n",a);
a=swap32_1(a);
printf("swap32_1--->%x\n",a);
a=0x12345678;
a=swap(a);
printf("swap--->%x\n",a);
a=0x12345678;
a=bswap(a);
printf("bswap--->%x",a);
}