python~socket编程学习总结(一)

在学习socket编程前,需要先了解下struct模块。使用struct模块可以在不改变传输数据类型的前提下,实现python跨平台使用;

Struct 模块

作用:

Python是一门非常简洁的语言,对于数据类型的表示,不像其他语言预定义了许多类型(如:在C#中,光整型就定义了8种),它只定义了六种基本类型:字符串,整数,浮点数,元组,列表,字典。通过这六种数据类型,我们可以完成大部分工作。但当Python需要通过网络与其他的平台进行交互的时候,必须考虑到将这些数据类型与其他平台或语言之间的类型进行互相转换问题。打个比方:C++写的客户端发送一个int型(4字节)变量的数据到Python写的服务器,Python接收到表示这个整数的4个字节数据,怎么解析成Python认识的整数呢? Python的标准模块struct就用来解决这个问题。

将打包的数据类型,发给服务器端;服务器端解包时,直接还原回来这样传输之后数据类型不会被改变

struct.pack

其函数原型为:struct.pack(fmt, v1, v2, ...),参数fmt是格式字符串,v1, v2, ...表示要转换的python值。

# -*- coding: UTF-8 -*-  
import struct    

a = 20    
b = 400    
s = struct.pack("ii", a, b) #转换后的s是bytes类型
print ('length:', len(s))    
print (s)    
print (type(s))

s1 = struct.pack("2i", a, b) 
print ('length:', len(s1))    
print (s1)  
print (type(s1))  

** “ii”和”2i”表示的都是将两个参数转化为int类型,网络间传输的是bytes类型

格式符"i"表示转换为int,'ii'表示有两个int变量。进行转换后的结果长度为8个字节(int类型占用4个字节,两个int为8个字节),可以看到输出的结果是乱码,因为结果是二进制数据。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值