#include <stdio.h>/*小端模式数据的低位放在低地址空间,数据的高位放在高地址空间大端模式数据的高位放在低地址空间,数据的低位放在高地址空间
*/
bool IsLittle()//判断主机序是否为小端
{short a = 0x0001;//小数据为0x01,高数据为0x00return *(char*)&a == 0x01; //低地址放小数据
}long Htonl(long a)
{long b = 0;/*小端      从低地址*/if (!IsLittle())//大端return a;for (int i = 0; i < sizeof(a); i++)//小端:0x12345678->0x78563412{                                        //处理单位为字节,1字节8位//  b 左移  把 低地址转成高地址b = (b << 8) | (a & 0xff);a >>= 8;}return b;
}long Ntohl(long a) {long b = 0;if (!IsLittle()) return a;// 实现都一样for (int i = 0; i < sizeof(a); i++)//0x 78 56 34 12 -> 0x 12 34 56 78{                                       b = (b << 8) | (a & 0xff);a >>= 8;}return b;
}
typedef unsigned short int uint16;typedef unsigned long int uint32;#define BigLittleSwap32(A)  ((((uint32)(A) & 0xff000000) >> 24) | (((uint32)(A) & 0x00ff0000) >> 8) | (((uint32)(A) & 0x0000ff00) << 8) | (((uint32)(A) & 0x000000ff) << 24))int main()
{//读数据永远是从低地址开始的!!!// 00000000 00000000 00000000 00000004//  00 00 00 04//  低地址 -> 高地址//  04 00 00 00int  a = 4;/*78 56 34 12 Htonl ()    ->12 34 56 78*/printf("%x\n", Htonl(0x12345678));printf("%x\n", BigLittleSwap32(0x12345678));printf("%x\n", BigLittleSwap32(0x78563412));printf("%x\n", Ntohl(0x78563412));return 0;
}

htonl, ntohl两种实现相关推荐

  1. 两种大小端判断的方式

    网络通信是按照字节流进行数据交换的,主机根据不同的CPU型号可能是大段存储,也可能是小端存储.而网络字节序在TCP/IP协议中已经规定好了,采用大端的排序方式. 所以网络通信中一般将需要传输的整数型值 ...

  2. htonl(), ntohl(), htons(), ntohs() 函数

    转自:http://www.cnblogs.com/s7vens/archive/2011/12/12/2284892.html 在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题 ...

  3. htonl(), ntohl(), htons(), ntohs() 函数具体应用

    htons和htonl函数具体应用 htons和htonl函数,是用来将主机字节顺序转换为网络字节顺序 在进行网络抓包时,抓到的包的数据是网络字节顺序,在进行编程时,要进行主机字节顺序和网络字节顺序间 ...

  4. htonl ntohl htons ntohs

    在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题. 这时就可能用到htons(), ntohl(), ntohs(),htons()这4个网络字节顺序与本地字节顺序之间的转换函数 ...

  5. 网络字节顺序和主机字节顺序的转换(htons ntohs htonl ntohl)

    from  https://blog.csdn.net/baidu_33621692/article/details/53213002 网络字节顺序和主机字节顺序的转换(htons ntohs hto ...

  6. C/C++htonl(), ntohl(), ntohs(),htons()

    在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题.这是就可能用到htons(), ntohl(), ntohs(),htons()这4个函数. 网络字节顺序与本地字节顺序之间的转 ...

  7. 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题

    继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...

  8. tornado 异步两种实现形式 通过回调可以利用

    两种实现异步的方式 通过回调可以返回自己的数据

  9. Pytorch两种模型保存方式

    以字典方式保存,更容易解析和可视化 Pytorch两种模型保存方式 大黑_7e1b关注 2019.02.12 17:49:35字数 13阅读 5,907 只保存模型参数 # 保存 torch.save ...

最新文章

  1. JS中的let和var的区别
  2. WordPress 短代码集
  3. 直接上干货!技术水平真的很重要!复习指南
  4. minio 文件预览_Minio使用说明
  5. Microsoft .NET Micro Framework Training conducted by Sean Liming (上海)
  6. html5 video mute按钮,How to mute an html5 video player
  7. Palo Alto推出全新Traps高级终端功能,强化勒索软件防御优势
  8. CSM (Compatility Suport Module)兼容支持模块
  9. python画指数函数图像_如何使用python的matplotlib模块画指数函数图像
  10. win7系统更换锁屏壁纸
  11. Electron修改图标
  12. 网络计算机不能打印,如果共享打印机后局域网计算机无法打印,该怎么办?
  13. 5G时代来临,电影行业面临的机遇与挑战
  14. 【舒利迭】 沙美特罗替卡松粉吸入剂 (50微克 250微克)
  15. unity UI 跟随3D物体移动
  16. Excel超实用办公技巧,迅速提高办公效率
  17. 长短期记忆人工神经网络(LSTM)及其tensorflow代码应用
  18. Jacobian矩阵的理解
  19. 引热议!多所高校明文规定:不再给部分全日制研究生安排宿舍
  20. Python——迷宫生成和迷宫破解算法

热门文章

  1. 旅游网案例:旅游线路名称查询
  2. 从网上购物者角度看购物商城广告的推广模式
  3. Delving into Localization Errors for Monocular 3D Object Detection 论文学习
  4. 微机原理和计算机组成原理一样吗_「连载」信息技术基础题型归纳之计算机组成原理3...
  5. 使用cmd命令查看电脑是不是翻新机 如何查看自己电脑是不是翻新机
  6. JavaScript恶意代码
  7. mysql主从遇故障自动切换_mysql主宕机,主从故障切换(一主多从)
  8. privat,pubic的区别
  9. 程序员-开发工作流程英文术语
  10. VN服务器IP地址切换,客户端连接解决方案!