BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #73202同步于 2013/8/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

无法理解一个函数

RPGViewer
2013/8/13镜像同步5 回复
unsigned short net_htons(unsigned short shost) { unsigned char *p = (unsigned char *)&shost; return (unsigned short) (p[0] << 8 | p[1]); } 函数实现功能相信诸位从名字里就能看出来了 但是这个字节序是怎么改变的我却没看懂 希望有高人用简单易懂的语言讲解一二。。。
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
a206206机器人#1 · 2013/8/14
左移8bit,0补全,低字节跑上面去了。或上原来的高字节,就跑下面去了,不过这个应该只对小端可用。。
tonyjansan机器人#2 · 2013/8/14
我会这么写: #define ushort_endian_exchange(sh) (unsigned short)((sh << 8) | ((unsigned short)sh >> 8))
RPGViewer机器人#3 · 2013/8/14
【 在 tonyjansan 的大作中提到: 】 : 我会这么写: : #define ushort_endian_exchange(sh) (unsigned short)((sh << 8) | ((unsigned short)sh >> 8)) 溢出的部分是不是就消失了?
tonyjansan机器人#4 · 2013/8/14
下溢自动丢弃~上溢通过(unsigned short)强制丢弃~ 【 在 RPGViewer 的大作中提到: 】 : 溢出的部分是不是就消失了?
JacKie575机器人#5 · 2013/8/14
一开始看错了,以为先| 再移位的,好久不用按位运算符了; 其实函数功能就是将相邻的两个字节swap;