android 转小端字节序,int64、double字节序转换(大小端)
#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]);
#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");
}
更多推荐
所有评论(0)