zoukankan      html  css  js  c++  java
  • PHP的ntohl网络字节序函数及相关知识

        PHP与C服务器的socket通信,在做数据转换的时候,PHP没有提供对应将网络字节序和机器字节序相互转换的程序,但是根据函数的意义,我们可以做相应的转换来实现这一函数:

    function ntohl($str){
        $arr = unpack('I', pack('N', $str));
        return $arr[1];
    }

    函数的意义
        程序的作用是将网络字节序和机器字节序进行相互转换。在C/C++、Python、Delphi中都提供了相应的函数“ntohl”和“htonl”,如果是short类型就是“ntohs”和“htons”。下面是这些函数的意义:

    ntohl()--"Network to Host Long"
    htonl()--"Host to Network Long"
    htons()--"Host to Network Short"
    ntohs()--"Network to Host Short"
    

      

    什么是主机字节序
        不同的机器字节序不相同,这与使用的CPU有关。不同的CPU在处理高位字节时所存储的顺序是不同的。
        例如Intel x86结构下, short型数0x1234表示为34 12, int型数0x12345678表示为78 56 34 12
        如IBM power PC结构下, short型数0x1234表示为12 34, int型数0x12345678表示为12 34 56 78

    网络字节序
        正是由于每个主机的处理顺序有可能不同,所以在网络协议中规定数据从高到低顺序存储,目的是在不同架构的主机中可以正常通信,避免兼容性问题。

    参考:http://n3yang.com/archives/2011/12/16/php-function-ntohl/

  • 相关阅读:
    调用组件的C++代码
    如何用C语言读写文件
    linux 常用命令总结(tsg)
    com.mysql.jdbc.MysqlDataTruncation: Data trunca...
    SpringMVC配置
    中文转换成Unicode编码 和 Unicode编码转换为中文
    在visual studio中运行C++心得
    博客园博客转至个人网站博客声明
    Seafile安装踩坑
    不要因为走得太远,而忘了自己的初心
  • 原文地址:https://www.cnblogs.com/rnckty/p/4421676.html
Copyright © 2011-2022 走看看