zoukankan      html  css  js  c++  java
  • 判断主机、网络字节序和互相转换

    大端字节序(big-endian):按照内存地址的增长方向,高位数据储存于低位地址。

    小端字节序(little-endian):按照内存地址增长方向,高位数据储存于高位地址。

    判断主机、网络字节序:

    #include <stdio.h>
    #include <arpa/inet.h> int main(void) {   unsigned short int h = 0x1234;   unsigned short int n;
      
    if (*((unsigned char *)&h) == 0x12) {     printf("big-endian ");   }   if (*((unsigned char *)&h) == 0x34) {     printf("little-endian ");   }
      n = htons(h);
      if (*((unsigned char *)&n) == 0x12) {
        printf("big-endian ");
      } else {
        printf("little-endian ");
      } 
      
    return 0; }

    或者:

    #include <stdio.h>  
    #include <arpa/inet.h>  
      
    int main(){  
        unsigned long a = 0x12345678;  
        unsigned char *p = (unsigned char *)(&a);  
        printf("主机字节序:%0x    %0x   %0x   %0x
    ",  p[0], p[1], p[2], p[3]);  
    
        unsigned long b = htonl(a);  //将主机字节序转化成了网络字节序  
                      
        p = (unsigned char *)(&b);  
      
        printf("网络字节序:%0x    %0x   %0x   %0x
    ",  p[0], p[1], p[2], p[3]);  
        
      return 0; }
    结果:
      主机字节序:78 56 34 12
      网络字节序:12 34 56 78

    转化:

    include <stdio.h>  
    #include <arpa/inet.h>  
    
    int main()  
    {  
        struct in_addr ipaddr;  
        unsigned long addr = inet_addr("192.168.1.100");  
        printf("addr = %u
    ", ntohl(addr));  
    
        ipaddr.s_addr = addr;  
        printf("%s
    ", inet_ntoa(ipaddr));    
        return 0;    
    } 
    结果:
      addr = 3232235876
      129.168.1.100

     参考:http://blog.csdn.net/msdnwolaile/article/details/50727653

    主机字节序与网络字节序的转换函数:htonl、ntohl、htons、ntohs     网址:http://blog.csdn.net/kulala082/article/details/53431473

  • 相关阅读:
    hdu 2063 二分图—最大匹配
    sql 中文转拼音首字母
    PhpStorm中如何使用Xdebug工具,入门级操作方法
    Linux怎么查看软件安装路径 查看mysql安装在哪
    仿淘宝实现多行星级评价
    Syslog linux 日志 规格严格
    Windows 退出码 规格严格
    AIX 查看进程监听端口 规格严格
    AIX tar zxvf 规格严格
    IpV6 linux RedHat5 规格严格
  • 原文地址:https://www.cnblogs.com/coolYuan/p/8350727.html
Copyright © 2011-2022 走看看