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

  • 相关阅读:
    android AsyncTask
    android利用provider查询同一个数据库中没有对外暴露出来的表
    PowerProfile.java与power_profile.xml
    Java的动态绑定机制
    Activity Intent Flags及Task相关属性
    非阻塞socket调用connect, epoll和select检查连接情况示例
    Linux Epoll相关知识
    JAVA并发编程
    Activity生命周期(深入理解)
    Android线程间通信更新UI的方法(重点分析EventBus)
  • 原文地址:https://www.cnblogs.com/coolYuan/p/8350727.html
Copyright © 2011-2022 走看看