[python&php 网络编程]字节序转换

原创 2015年11月19日 18:09:21

如果不清楚关于字节序方面的知识,可以百度下

1.python写法

import socket

def convert_integer():
    data = 1234
    # 32-bit
    print "Original: %s => Long  host byte order: %s, Network byte order: %s" %(data, socket.ntohl(data), socket.htonl(data))
    # 16-bit
    print "Original: %s => Short  host byte order: %s, Network byte order: %s" %(data, socket.ntohs(data), socket.htons(data))

    
if __name__ == '__main__':
    convert_integer()

2.php写法

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

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

function ntohs($str)
{
    $res = unpack('S', pack('n', $str));
    return $res[1];
}

function htons($str)
{
    $res = unpack('n', pack('S', $str));
    return $res[1];
}

function convert_integer(){
    $data = 1234;
    printf("Original: %s => Long  host byte order: %s, Network byte order: %s\n", $data, ntohl($data), htonl($data));
    printf("Original: %s => Short  host byte order: %s, Network byte order: %s\n", $data, ntohs($data), htons($data));
}

convert_integer();

很悲催的是php没有ntohl,htonl,ntohs,htons这几个函数可用,代码量直接被完爆~虽然我也是一个phper,但不得不承认php网络方面的能力还是不如python的~当然php优势不在这~

转载请标注文章地址:http://blog.csdn.net/ddjohn/article/details/49931395

版权声明:本文为博主原创文章,未经博主允许不得转载。

php主机字节序和网络字节序

使用php编写socket程序时,也需要注意主机字节序和网络字节序的转换 主机字节序就是我们平常说的大端和小端模式:不同的 CPU 有不同的字节序类型,这些字节序是指整数在内存中保存的顺序 这个叫做...
  • sole_cc
  • sole_cc
  • 2016年07月24日 22:01
  • 1076

网络字节序与主机字节序

一.什么是Big Endian和Little Endian? 1.故事的起源 “endian”这个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(...
  • App_IOS
  • App_IOS
  • 2017年02月07日 11:27
  • 323

Linux 网络编程——网络字节序、地址转换

一、字节序的概念 字节序是指多字节数据的存储顺序,在设计计算机系统的时候,有两种处理内存中数据的方法:大端格式、小端格式。 小端格式(Little-Endian):...
  • lianghe_work
  • lianghe_work
  • 2015年04月21日 14:43
  • 2085

主机字节序与网络字节序的转换过程

主机字节序与网络字节序的转换过程
  • an_tang
  • an_tang
  • 2017年05月29日 17:13
  • 1052

网络字节序之间的转换函数详解

接下来介绍两组地址转换函数,
  • a1152024140
  • a1152024140
  • 2014年10月05日 18:17
  • 1501

网络字节序和本地字节序

1.字节序定义:是指整数在内存中保存的顺序。2.字节序种类:a.Little endinan 低位存储在内存的低地址,高位存储在内存的高地址;b.Big endian 高位存储在内存的低地址,低位存储...
  • u012627927
  • u012627927
  • 2015年06月11日 15:17
  • 1168

网络字节序与主机字节序的转换

在对IP地址结构体SOCKADDR_IN赋值的时候,经常会用到下列的函数htonl,htons,inet_addr,与之相对应的函数是ntohl,ntohs,inet_ntoa。查看这些函数的解析,会...
  • u012317833
  • u012317833
  • 2014年09月20日 08:50
  • 1585

【网络编程】数据传输时的字节序

前言可能小组的同学很早就听说过大小端,但是似乎这个顺序并没有什么卵用。。(我就是这么想的)不过在学习网络编程中,突然对这个问题有了新的认识,赶紧总结下,不然以后肯定踩坑。。。本文假定读者已经明白了大小...
  • XiyouLinux_Kangyijie
  • XiyouLinux_Kangyijie
  • 2017年06月10日 16:15
  • 766

主机字节序与网络字节序的转换函数:htonl、ntohl、htons、ntohs

Part 1: htons函数具体解释      在Linux和Windows网络编程时需要用到htons和htonl函数,用来将主机字节顺序转换为网络字节顺序。      在Intel机器下...
  • kulala082
  • kulala082
  • 2016年12月02日 09:24
  • 5453

c/c++字节序转换

c/c++字节序转换 博客分类:  网络编程    字节序(byte order)关系到多字节整数(short/int16、int/int32,int64)和浮点数的各字节在内存...
  • hanjw05
  • hanjw05
  • 2016年12月27日 22:52
  • 1622
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[python&php 网络编程]字节序转换
举报原因:
原因补充:

(最多只允许输入30个字)