PHP的ntohl网络字节序函数及相关知识
2015-04-13 11:16
246 查看
PHP与C服务器的socket通信,在做数据转换的时候,PHP没有提供对应将网络字节序和机器字节序相互转换的程序,但是根据函数的意义,我们可以做相应的转换来实现这一函数:
函数的意义
程序的作用是将网络字节序和机器字节序进行相互转换。在C/C++、Python、Delphi中都提供了相应的函数“ntohl”和“htonl”,如果是short类型就是“ntohs”和“htons”。下面是这些函数的意义:
什么是主机字节序
不同的机器字节序不相同,这与使用的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/
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/
相关文章推荐
- PHP海补知识(7)-- 函数相关
- PHP获取字段长度相关函数使用技巧
- PHP基础知识--函数
- 关于php的时间相关函数需要注意时区问题
- PHP操作数组相关函数
- PHP中ob_start()函数相关应用
- php基础知识【函数】(6)mysql数据库
- MongoDb、Mongodb php扩展 安装步骤及相关知识
- PHP数组相关的函数
- php的输出缓存及其相关函数
- php 数组指针相关函数current(),next(),prev(),end()
- PHP学习笔记——PHP数组中键和值搜索相关函数3
- PHP数组的相关处理函数1
- GTK相关函数知识
- 函数的相关知识
- PHP相关知识
- PHP 类相关函数
- php基础知识【函数】(7)url和ob函数
- PHP 大小写转换、首字母大写、每个单词首字母大写转换相关函数
- PHP需要拷到system32下的加载库及一些相关知识