`

python struct (对python obj进行编码解码)

 
阅读更多

参考文档:

http://docs.python.org/2/library/struct.html
http://blog.163.com/ws__fyy/blog/static/12243381720123181013666/
http://blog.163.com/kongdelu2009@yeah/blog/static/1119952072009102562126194/

 

# -*- coding: utf-8 -*-
import struct
import sys
import os

'''
1. Byte order, Size, Alignment
-------------------------------------------------------------
Character 	Byte order 	        Size 	    Alignment
-------------------------------------------------------------
@ 	        native 	                native 	    native  ==> default
= 	        native 	                standard    none
< 	        little-endian 	        standard    none
> 	        big-endian 	        standard    none
! 	        network (= big-endian) 	standard    none
-------------------------------------------------------------

1). byte order: Native byte order is big-endian or little-endian, depending on the host system.
    ①Intel X86 / AMD64(x86-64) ==> little-endian
    ②Motorola 68000 / PowerPC G5 ==> big-endian
    ③ARM / Intel Itanium feature switchable endianness (bi-endian)
2). size:
    ①Native size are determined using the C compiler's sizeof expression.
    ②Standard size depends only on the 'format character'
3). alignment:

2. format character
Format 	C Type 	            Python type 	    Standard size
x 	pad byte 	    no value 	  	 
c 	char 	            string of length 1      1 	 
b 	signed char 	    integer 	            1 	
B 	unsigned char 	    integer 	            1
? 	_Bool 	            bool 	            1 
h 	short 	            integer 	            2 
H 	unsigned short 	    integer 	            2 
i 	int 	            integer 	            4 
I 	unsigned int 	    integer 	            4 
l 	long 	            integer 	            4
L 	unsigned long 	    integer 	            4 
q 	long long 	    integer 	            8 
Q 	unsigned long long  integer 	            8 
f 	float 	            float 	            4 
d 	double 	            float 	            8 
s 	char[] 	            string 	  	 
p 	char[] 	            string 	  	 
P 	void * 	            integer 	  
'''

#检查大端小端
print sys.byteorder

s='abcde'
a=20
b=400

'''
3. python obj-->pack-->str
'''
packed_str = struct.pack('< 5s2i',s,a,b)
#<      : little endian, standard side, none alignment
# whitespaces are ignored.
#5s     : 5 is the "size" of the string
#2i     : 2 is the "repeat count"
#print len(s)
print struct.calcsize('< 5s2i')
print repr(s)
print type(s)

'''
4. str-->pack-->python obj
'''
(s, a, b) = struct.unpack('<5s2i', packed_str)
print s
print a
print b

 

 

 

分享到:
评论

相关推荐

    obj_struct:一个在文本文件中写入对象的复杂结构的Python模块

    1. **编码器和解码器**:`obj_struct`模块提供了相应的编码器和解码器函数,用于将Python对象转换为文本表示,并从文本中重建对象。这些函数通常会处理包括基本类型(如字符串、数字、布尔值)、列表、元组、字典...

    pickle与struct模块简介

    - `struct`模块的使用需要对数据类型和字节序有一定的了解。 总之,`pickle`模块和`struct`模块都是Python中非常实用的工具,它们分别针对序列化/反序列化和字节流处理提供了强大的支持。掌握这两个模块的基本用法...

    python有关的模块

    `json.dumps()`用于将Python对象编码为JSON字符串,`json.loads()`则用于将JSON字符串解码为Python对象。这两个函数在与Web服务交互或存储配置数据时非常有用。 5. **re模块**:正则表达式的处理模块。 - `re....

    python 实现简单的FTP程序

    在Python中,通过`struct.unpack`函数来解包接收到的数据,获取命令长度,从而正确处理每个客户端命令。 6. **并发处理** 使用`socketserver.ThreadingTCPServer`创建并发服务器,允许同时处理多个客户端请求。每...

    python 时间比较,很全面

    - `struct_time`对象:`gmtime()`, `localtime()`, 和 `mktime()` 函数用于将时间戳与结构化时间之间进行转换。 2. **datetime模块**: - `datetime`类:包含日期和时间信息的对象,如`datetime.now()`获取当前...

    Python实现序列化及csv文件读取

    这篇文章主要介绍了Python实现序列化及csv文件读取,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一、python 序列化: 序列化指的是将对象转化为”串行化”...

    Golang如何调用Python代码详解

    文章中提到的操作是在Ubuntu18.04系统下进行的,如果你使用的开发环境不同,可能需要进行相应的调整。 #### 5. 总结 Golang调用Python代码是一个可以极大拓宽其应用范围的技术点,不仅适用于将Golang编写的API服务...

    CoffParser:解析COFF .Obj文件的小型python脚本

    COFF (Common Object File Format) 是一种用于存储编译器产生的目标文件(.obj)的格式,它在Windows操作系统和一些Unix变体中广泛使用。`CoffParser` 是一个小型的Python脚本,用于解析这种文件格式,帮助开发者...

    python:批量统计xml中各类目标的数量案例

    首先,我们需要导入必要的库,包括`os`用于文件操作,`xml.etree.ElementTree`(简称ET)用于解析XML文件,`numpy`进行数值计算,`matplotlib`用于数据可视化,以及`PIL`(Python Imaging Library)处理图像数据。...

    MATLAB设计_将readObj文件转换为Matlab结构.zip

    - `matlabStruct.(properties{i}) = obj.(properties{i});` `end` 7. **注意事项**: 这种转换可能会遇到的问题包括类型不兼容、嵌套对象处理、以及Java特定特性的缺失,如静态方法或私有属性。因此,`readObj`...

    python字符串常用函数.pdf

    Python 字符串常用函数 Python 字符串是 Python 语言中最基本的数据类型之一,字符串函数是处理字符串的各种操作。下面将详细介绍 Python 中的字符串常用函数。 1. replace(string, old, new[, maxsplit]):字符...

    Python datetime和unix时间戳之间相互转换的讲解

    这篇教程介绍了如何在Python中将`datetime`对象与UNIX时间戳进行转换。这对于在各种API之间交换时间数据,或者在需要将时间数据存储为易于计算的数字格式时非常有用。记住,UNIX时间戳是不包含闰秒的,因此在处理跨...

    使用Python将字符串转换为格式化的日期时间字符串

    有时我们需要将字符串转换成特定格式的日期时间字符串,以便于展示或者与其他日期时间数据进行比较。本篇将详细介绍如何使用Python的`datetime`模块来实现这个功能。 首先,Python提供了`time`和`datetime`两个模块...

    机器人搬箱子.pdf

    从提供的文件内容中,我们可以提取到与机器人搬箱子相关的编程知识点,具体可以从以下几个方面进行解读: 1. 结构体定义与使用: 在文件中定义了一个名为`SProblem`的结构体,其中包含了三个字符类型的成员变量:`...

    JSON_c语言开发指南.doc

    - `boolean json_object_get_boolean(struct json_object *obj);`:从JSON对象中获取布尔值。 - `struct json_object* json_object_new_int(int i);`:创建表示整数值的JSON对象。 - `int json_object_get_int...

    json C语言 接口函数

    - `boolean json_object_get_boolean(struct json_object* obj)`:从JSON对象中获取布尔值。 - `struct json_object* json_object_new_int(int i)`:创建一个`json_type_int`类型的JSON对象。 - `int json_object...

    C++实现反射机制

    通常,动态语言如Java和Python内置了反射机制,但C++作为静态类型语言,其标准库并没有提供直接的支持。然而,通过一些技巧和第三方库,我们可以在C++中实现类似的功能。 ### C++反射基础 C++17引入了`std::any`和...

    mqtt client 代码

    void on_message(struct mosquitto *mosq, void *obj, const struct mosquitto_message *msg) { printf("Received message on topic %s: %s\n", msg-&gt;topic, (char *)msg-&gt;payload); } mosquitto_message_callback_...

    c++实现反射demo

    在许多面向对象的语言中,如Java、C#和Python,反射都被广泛应用。然而,C++作为一门静态类型语言,其标准库并没有内置反射功能。但通过一些技巧和第三方库,我们可以实现类似的功能。以下是对"C++实现反射demo"的...

Global site tag (gtag.js) - Google Analytics