endian.cc
来自「ns gpsr路由协议 在ns2平台下实现的 对大家很有好处」· CC 代码 · 共 53 行
CC
53 行
#include "endian.h" /* rotates 2 bytes */unsigned short swap2(u_2bytes In) { u_2bytes Out; ((char*)&(Out))[0] = ((char*)&(In))[1]; ((char*)&(Out))[1] = ((char*)&(In))[0]; return Out;}/* rotates 4 bytes */u_4bytes rotate4(u_4bytes In) { u_4bytes Out; ((u_2bytes*)&Out)[0] = swap2(((u_2bytes*)&In)[1]); ((u_2bytes*)&Out)[1] = swap2(((u_2bytes*)&In)[0]); return Out;}/* detects endian-ness * Note: will not work if sizeof(unsigned long)==1 */int IsLittleEndian(void) { static const unsigned long long_number = 1; return *(const unsigned char *)&long_number;}/* changes endian-ness */void ToOtherEndian(TEntry *e) { /* unroll this loop if you want to enumerate u_4bytes members of TEntry_v2 */ u_4bytes *p; for (p = &(e -> head.event_duration); p <= &(e -> url); p++) *p = rotate4(*p); e -> tail.status = swap2(e -> tail.status); if (sizeof(method_t) == 2) e -> tail.method = swap2(e -> tail.method); else if (sizeof(method_t) == 4) e -> tail.method = rotate4(e -> tail.method); if (sizeof(protocol_t) == 2) e -> tail.protocol = swap2(e -> tail.protocol); else if (sizeof(protocol_t) == 4) e -> tail.protocol = rotate4(e -> tail.protocol);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?