十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
2个字节short int 高低位转化:
成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、成都做网站、寿光网络推广、小程序定制开发、寿光网络营销、寿光企业策划、寿光品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供寿光建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
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字节 大端小端码的转换操作。
可以使用位域来定义,同时来转换。例如一个32位int型可以如下定义:
struct test
{
union
{
int bits_4;
struct
{
int bit1 : 8;
int bit2 : 8;
int bit3 : 8;
int bit4 : 8;
};
};
};
将test.bit1和test.bit4对调,test.bit2和test.bit3对调即可。
我也搞网络编程搞好久了,大小端这个问题倒是没有遇到过啊,我同事做Java,我做IOS都一样的,都是小端的。
建议你用抓包软件抓下包看看,还有就是注意发送时数据对齐问题,不同的系统可能一样的类型长度就不一样,比如在mac系统中long型有8字节,但是在IOS、VC中就只有四个字节,一般使用socket发送数据时都是打包发送的(头部一般都是固定的结构体),这个问题必须要注意