zoukankan      html  css  js  c++  java
  • 把数字按网络顺序或主机顺序存放到字符串中++++把字符串按网络顺序转换成数字++++把字符串按主机顺序转换成数字

    /****把数字按网络顺序放到字符串中****/

    int nNumToNet(int num,char *buf,int len){
        int   ret_int;
        short ret_short;
        if(sizeof(int)!=4  || sizeof(short)!=2){
            printf("本程序不能在低于32位的机器上运行!
    ");
            exit(1);
        }
        if(len==2){
            ret_short=(short)num;
            ret_short=htons(ret_short);
            memcpy(buf,(char *)&ret_short,len);
        }else if(len==4){
            ret_int=(int)num;
            ret_int=htonl(ret_int);
            memcpy(buf,(char *)&ret_int,len);
        }else{
            printf("转换网络顺序时长度[%d]只能是2或者4!
    ",len);
            return(-1);
        }
        return(0);
    }

    /****把数字按主机顺序放到字符串中****/

    int nNumToHost(int num,char *buf,int len){
        int   ret_int;
        short ret_short;
        if(sizeof(int)!=4  || sizeof(short)!=2){
            printf("本程序不能在低于32位的机器上运行!
    ");
            exit(1);
        }
        if(len==2){
            ret_short=(short)num;
            memcpy(buf,(char *)&ret_short,len);
        }else if(len==4){
            ret_int=(int)num;
            memcpy(buf,(char *)&ret_int,len);
        }else{
            printf("转换网络顺序时长度[%d]只能是2或者4!
    ",len);
            return(-1);
        }
        return(0);
    }

    /****把字符串按网络顺序转换成数字****/

    int nNetToNum(char *buf,int len){
        int   ret_int;
        short ret_short;
        if(sizeof(int)!=4  || sizeof(short)!=2){
            printf("本程序不能在低于32位的机器上运行!
    ");
            exit(1);
        }
        if(len==2){
            memcpy((char *)&ret_short,buf,len);
            ret_short=ntohs(ret_short);
            return((int)ret_short);
        }else if(len==4){
            memcpy((char *)&ret_int,buf,len);
            ret_int=ntohl(ret_int);
            return((int)ret_int);
        }else{
            printf("转换网络顺序时长度[%d]只能是2或者4!
    ",len);
            return(-1);
        }
        return(0);
    }

    /****把字符串按主机顺序转换成数字****/

    int nHostToNum(char *buf,int len){
        int   ret_int;
        short ret_short;
        if(sizeof(int)!=4  || sizeof(short)!=2){
            printf("本程序不能在低于32位的机器上运行!
    ");
            exit(1);
        }
        if(len==2){
            memcpy((char *)&ret_short,buf,len);
            return((int)ret_short);
        }else if(len==4){
            memcpy((char *)&ret_int,buf,len);
            return((int)ret_int);
        }else{
            printf("转换网络顺序时长度[%d]只能是2或者4!
    ",len);
            return(-1);
        }
        return(0);
    }
  • 相关阅读:
    [轉]推荐一个C#代码混淆器 .NET Reactor
    [转贴]什么是ORM
    十个极其有用的在线网站设计工具
    .NET Windows客户端程序在代理环境下的相关设置
    记4月28成都软件技术沙龙活动
    2010年仲夏成都.NET俱乐部活动——深度.NET
    在MOSS 2010上配置PDF的搜索【简译】
    在Windows 7中遇到android 模拟器出错,emulator: ERROR: unknown virtual device name的正确解决办法
    Visual Studio LightSwitch初体验和定位看法
    在.NET上进行线性代数等科学计算
  • 原文地址:https://www.cnblogs.com/sherlockhomles/p/3213840.html
Copyright © 2011-2022 走看看