python struct模块的使用
生活随笔
收集整理的這篇文章主要介紹了
python struct模块的使用
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
struct模塊中的函數(shù)
| pack(fmt,v1,v2…) | string | 按照給定的格式(fmt),把數(shù)據(jù)轉(zhuǎn)換成字符串(字節(jié)流),并將該字符串返回. |
| pack_into(fmt,buffer,offset,v1,v2…) | None | 按照給定的格式(fmt),將數(shù)據(jù)轉(zhuǎn)換成字符串(字節(jié)流),并將字節(jié)流寫入以offset開(kāi)始的buffer中.(buffer為可寫的緩沖區(qū),可用array模塊) |
| unpack(fmt,v1,v2……) | tuple | 按照給定的格式(fmt)解析字節(jié)流,并返回解析結(jié)果 |
| pack_from(fmt,buffer,offset) | tuple | 按照給定的格式(fmt)解析以offset開(kāi)始的緩沖區(qū),并返回解析結(jié)果 |
| calcsize(fmt) | size of fmt | 計(jì)算給定的格式(fmt)占用多少字節(jié)的內(nèi)存,注意對(duì)齊方式 |
格式化字符串
當(dāng)打包或者解包的時(shí),需要按照特定的方式來(lái)打包或者解包.該方式就是格式化字符串,它指定了數(shù)據(jù)類型,除此之外,還有用于控制字節(jié)順序、大小和對(duì)齊方式的特殊字符.
對(duì)齊方式
為了同c中的結(jié)構(gòu)體交換數(shù)據(jù),還要考慮c或c++編譯器使用了字節(jié)對(duì)齊,通常是以4個(gè)字節(jié)為單位的32位系統(tǒng),故而struct根據(jù)本地機(jī)器字節(jié)順序轉(zhuǎn)換.可以用格式中的第一個(gè)字符來(lái)改變對(duì)齊方式.
定義如下
| @(默認(rèn)) | 本機(jī) | 本機(jī) |
| = | 本機(jī) | 標(biāo)準(zhǔn) |
| < | 小端 | 標(biāo)準(zhǔn) |
| > | 大端 | 標(biāo)準(zhǔn) |
| ! | network(大端) | 標(biāo)準(zhǔn) |
| Python | 學(xué)習(xí)交流 | QQ群:579817333 |
格式符
| x | pad byte(填充字節(jié)) | 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(大寫的i) | unsigned int | integer | 4 |
| l(小寫的L) | long | integer | 4 |
| L | unsigned long | long | 4 |
| q | long long | long | 8 |
| Q | unsigned long long | long | 8 |
| f | float | float | 4 |
| d | double | float | 8 |
| s | char[] | string | |
| p | char[] | string | |
| P | void * | long |
注意:
- _Bool在C99中定義,如果沒(méi)有這個(gè)類型,則將這個(gè)類型視為char,一個(gè)字節(jié);
- q和Q只適用于64位機(jī)器;
- 每個(gè)格式前可以有一個(gè)數(shù)字,表示這個(gè)類型的個(gè)數(shù),如s格式表示一定長(zhǎng)度的字符串,4s表示長(zhǎng)度為4的字符串;4i表示四個(gè)int;
- P用來(lái)轉(zhuǎn)換一個(gè)指針,其長(zhǎng)度和計(jì)算機(jī)相關(guān);
- f和d的長(zhǎng)度和計(jì)算機(jī)相關(guān);
總結(jié)
以上是生活随笔為你收集整理的python struct模块的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 4道Python装饰器练习题
- 下一篇: python 中 property 属性