文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>byte-order.h

byte-order.h

时间:2010-10-25  来源:nijiucaiba

这个文件主要是实现字节序转换, 即把一个多字节数据从本机转化为网络字节序。
主要实现了三个函数: static uint16_t (*hton16) (uint16_t); static uint32_t (*hton32) (uint32_t); static uint64_t (*hton64) (uint64_t);
明显就是分别转化16位,32位和64位整型数据了。这是三个函数指针,具体绑定到那个函数,是动态绑定的, 这里的实现手法有点意思,也许可以称为偷梁换柱吧:)
他实现方法是这样: static inline uint16_t __byte_order_init16 (uint16_t i) { uint32_t num = 1;
if (((char *)(&num))[0] == 1) { hton16 = ; hton32 = __swap32; hton64 = __swap64; } else { hton16 = __noswap16; hton32 = __noswap32; hton64 = __noswap64; }
return hton16 (i); }
static uint16_t (*hton16) (uint16_t) = __byte_order_init16;
只有第一次执行hton16时才进行绑定,直接给转到__swapXX或者_noswapXX上去了,很有意思吧。
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载