#include // 包含windows.h就不要包含这个头文件了

#pragma comment(lib, "Ws2_32.lib")

struct int64tonet

{

union

{

__int64 w_;

int r_[2];

}w, r;

int64tonet(__int64 i)

{

w.w_ = i;

r.r_[0] = htonl(w.r_[1]);

r.r_[1] = htonl(w.r_[0]);

}

__int64 operator()()

{

return r.w_;

}

};

#define INT64_TO_NET(val)((__int64) ( \

(((__int64) (val) &\

(__int64) (0x00000000000000ffU)) << 56) |\

(((__int64) (val) &\

(__int64) (0x000000000000ff00U)) << 40) |\

(((__int64) (val) &\

(__int64) (0x0000000000ff0000U)) << 24) |\

(((__int64) (val) &\

(__int64) (0x00000000ff000000U)) << 8) |\

(((__int64) (val) &\

(__int64) (0x000000ff00000000U)) >> 8) |\

(((__int64) (val) &\

(__int64) (0x0000ff0000000000U)) >> 24) |\

(((__int64) (val) &\

(__int64) (0x00ff000000000000U)) >> 40) |\

(((__int64) (val) &\

(__int64) (0xff00000000000000U)) >> 56)))

int main(int, char **)

{

__int64 i = 0x1122334455667788;

int64tonet j(i);

__int64 m = j();

__int64 n = INT64_TO_NET(i);

std::cout << std::hex << m << std::endl;

std::cout << std::hex << n << std::endl;

system("pause");

}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐