关闭

主机字节序和网络字节序列

标签: 网络内存存储测试数据
448人阅读 评论(0) 收藏 举报
分类:

主机字节序和网络字节序列

大端小端的定义
 a.Little endinan 低位存储在内存的低地址,高位存储在内存的高地址;
 b.Big endian 高位存储在内存的低地址,低位存储在内存的高地址;

写代码查看你的网络字节序列
    利用union里面的数据共享内存进行测试
    void t_order(){
        union{
            short value;
            char union_bytes[sizeof(short)];
        }test;
        test.value = 0x0102;
        printf("p0=%p,p1=%p",&(test.union_bytes[0]),&(test.union_bytes[1]));
        if(test.union_bytes[0] == 1 && test.union_bytes[1] == 2 ){
            puts("大端");
        }else if(test.union_bytes[0] == 2 && test.union_bytes[1] == 1 ){
            //0x7fff5fbff788 存储2  0x7fff5fbff789存储1
            puts("小端");
        }else{
            puts("未知");
        }
    }

网络字节序列默认是大端的,所以需要转换,java虚拟机默认的是大端字节序列

字节序列转换函数    
    htonl()--"Host to Network Long int"     32Bytes
   ntohl()--"Network to Host Long int"     32Bytes
   htons()--"Host to Network Short int"   16Bytes
   ntohs()--"Network to Host Short int"   16Bytes

看看代码
    void t_ntl(){
        int a = 0x403214;
        int b = htonl(a);
        //传输32位
        printf("host=%0x,big=%0x,big_t_host=%0x\n",a,b,ntohl(b));
        //16
        int a2 = 0x1234;
        int b2 = htons(a2);
        printf("host=%0x,big=%0x,big_t_host=%0x",a2,b2,ntohs(b2));
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Java字节序(不同语言中的网络数据传输时字节序列转换)

/** * 通信格式转换 * * Java和一些windows编程语言如c、c++、delphi所写的网络程序进行通讯时,需要进行相应的转换 * 高、低字节之间的转换 * windows的字节序为低字...
  • ycb1689
  • ycb1689
  • 2013-11-19 10:26
  • 2170

网络字节序和主机字节序详解!!!

我们都知道,如今的通讯方式已经趋向与多样化,异构通信(计算机软件(操作系统) +    计算机硬件(内核架构,ARM,x86)不同)也已经很普遍了,如,手机和电脑中的qq进行通信,,, 同时,在计...
  • msdnwolaile
  • msdnwolaile
  • 2016-02-24 09:52
  • 7006

主机字节序与网络字节序的转换函数:htonl、ntohl、htons、ntohs

Part 1: htons函数具体解释      在Linux和Windows网络编程时需要用到htons和htonl函数,用来将主机字节顺序转换为网络字节顺序。      在Intel机器下...
  • kulala082
  • kulala082
  • 2016-12-02 09:24
  • 5464

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

什么是网络字节顺序和主机字节顺序呢? 在进行网络编程时,需要进行转换以统一“格式”   简述: 网络字节顺序NBO(Network Byte Order): 按从高到低的顺序存储,在网络上使...
  • u011630366
  • u011630366
  • 2014-10-12 13:16
  • 2845

WinSock网络编程学习(三)判断主机字节序程序

什么是“字节序”? 在计算机网络中,通信是基于信息流的,不管是有线通信还是无线通信,那么数据在通道上传输时,就需要考虑一个问题:数据在传输时,正确的字节顺序是怎样的?收到的时候又该以怎样的顺序去解读...
  • huiguimoyu
  • huiguimoyu
  • 2014-02-23 13:43
  • 979

网络字节序和主机字节序

  • 2011-03-30 20:31
  • 26KB
  • 下载

利用宏将网络字节序和主机字节序ip格式化输出方法

  • 2014-08-28 15:05
  • 1KB
  • 下载

判断主机字节序大小端

  • 2013-09-04 14:24
  • 198B
  • 下载

网络传输过程中的字节序列问题

一、大端存储和小端存储   1、大端存储:多于一个字节的数据,把高字节部分存储在低地址,把低字节部分存储在高地址。        例:0x12345678这个数据,我们一般认为左边是高字节部分,右...
  • lengye7
  • lengye7
  • 2017-05-21 11:39
  • 297

iOS网络字节序列转换

iOS网络字节序列转换最近项目使用字节流的方式传输数据,数据包中包含数据的大小等相关的一些基础信息需要将字节转换成网络字节流的方式进行传输,因为之前一直使用的是Http或者用分隔符的方式去解决sock...
  • cjh16102377
  • cjh16102377
  • 2017-06-29 16:24
  • 254
    个人资料
    • 访问:165060次
    • 积分:3837
    • 等级:
    • 排名:第9659名
    • 原创:223篇
    • 转载:24篇
    • 译文:0篇
    • 评论:10条
    博客专栏