❶ c语言高低位互换问题
<< >>要加括号有优先级的啊c=((b&0x0000ffff)<<16)+((b&0xffff0000)>>16);
❷ c语言实现2个字节的高低位转化
2个字节short int 高低位转化:
short int y=0x7f21;
y = ( (y & 0xff00) >> 8) | ( (y & 0x00ff ) << 8);
printf("%#x",y);
-------------------------------
也可以利用 union
union B2
{
short int i;
unsigned char c[2];
// 。。。任意两字节类型
} ;
union B2 x;
unsigned char tmp;
x.i=0x1234;
tmp = x.c[0]; x.c[0]=x.c[1];x.c[1]=tmp;
// 也可以用上面的位运算方法交换高低端
printf("%#x\n",x.i);
// union 方法特别适合4字节8字节 大端小端码的转换操作。
❸ C语言 对字节的高位和低位进行互换!
可以直接用位运算:按位与,按位或,移位等
#include "stdio.h"
int main()
{
unsigned char tmp1,tmp2;
printf("please input a char: ");
scanf("%c", &tmp1);
tmp2=
((tmp1&0x01)<<7)
|((tmp1&0x02)<<5)
|((tmp1&0x04)<<3)
|((tmp1&0x08)<<1)
|((tmp1&0x10)>>1)
|((tmp1&0x20)>>3)
|((tmp1&0x40)>>5)
|((tmp1&0x80)>>7);
printf("converted char is: %c\n", tmp2);
return 0;
}
❹ 一个字节高低位互换,怎么C语言写
用移位操作来实现。 int newValue; char value1, value2; newValue = (value1
❺ C语言高低位互换操作
在看图形处理源码的时候有一段宏看不懂,就写了一个demo自己看了一下。
还是不大熟悉C语言的位操作。
这个宏挺有意思
注意 括号的位置很重要
((const uint8_t*)(x)) 这相当于把x所在的内存当做一段uint8类型的指针,索引x的第0位,因为是小端机,低位存低字节,所以[0]位存的是低字节,[1]位存的是高字节。
这样想的话,这个宏其实很简单了,就是把16位的无符号数,按照8位一个单位高低位互换
事实也证明如此,程序输出如下
❻ c语言编程将16位无符号数的高8位和低8位交换.
取出高8位,然后右移8位,再取出低8位,然后左移8位,再把它们相加就可以了,代码:
#include<stdio.h>
unsignedshortMyConvert(unsignedshortsval)
{
return((sval&0x00ff)<<8)+((sval&0xff00)>>8);
}
intmain()
{
unsignedshortsval=0xabcd;
printf("%d,0x%X ",sval,sval);
sval=MyConvert(sval);
printf("%d,0x%X ",sval,sval);
return0;
}
测试截图: