python struct模組和ctypes模組

2021-10-22 16:01:27 字數 2829 閱讀 5917

#float 轉 16進製制(hex)

import struct

deffloat_to_hex

(f):

return

hex(struct.unpack(

', struct.pack(

', f))[

0])**

****

****

****

****一/二

一、python的struct模組/二、位元組順序大小對齊方式 函式

return

explain

pack(fmt,v1,v2…)

string

按照給定的格式(fmt),把資料轉換成字串(位元組流),並將該字串返回.

pack_into(fmt,buffer,offset,v1,v2…)

none

按照給定的格式(fmt),將資料轉換成字串(位元組流),並將位元組流寫入以offset開始的buffer中.(buffer為可寫的緩衝區,可用array模組)

unpack(fmt,v1,v2……)

tuple

按照給定的格式(fmt)解析位元組流,並返回解析結果

pack_from(fmt,buffer,offset)

tuple

按照給定的格式(fmt)解析以offset開始的緩衝區,並返回解析結果

calcsize(fmt)

size of fmt

計算給定的格式(fmt)占用多少位元組的記憶體,注意對齊方式

三、測試樣例

# float 轉 16進製制(hex)

from ctypes import

*def

float_convert_hex

(s):

#將字串型的數字轉換成10進製數

i =int(s,16)

# convert from hex to a python int(從 hex 轉換為 python int)int() 函式用於將乙個字串或數字轉換為整型。

cp = pointer(c_int(i)

)# make this into a c integer(把這個變成 c 整數)

fp = cast(cp, pointer(c_float)

)# cast the int pointer to a float pointer(將 int 指標轉換為浮點指標)

return fp.contents.value # dereference the pointer, get the float(解引用指標,得到浮點數)

四、ctypes的指標

c_init(i)ctypes定義了一些和c相容的基本資料型別:

ctypes型別

c型別python型別

c_int

intint

c_float

float

float

c_byte

char

intc_double

double

float

c_char

char

單字元位元組物件

pointer()指標可以通過ctypes中的pointer()函式進行建立:pointer()函式不只是建立了乙個指標例項,它首先建立了乙個指標 型別 。這是通過呼叫pointer()函式實現的,它接收ctypes型別為引數,返回乙個新的型別:

cast(cp,pointer(c_float))cast()函式可以將乙個指標例項強制轉換為另一種 ctypes 型別。

五、bytes.fromhex()

# 16進製制(hex)轉 float

defhex_to_float

(f):

return

(struct.unpack(

'!f'

,bytes

.fromhex(f))[0])

bytesbytes 函式返回乙個新的 bytes 物件,該物件是乙個 0 <= x < 256 區間內的整數不可變序列。它是 bytearray 的不可變版本。

b=bytes.fromhex(a)hex字串向bytes轉換

c=b.hex()bytes向hex字串轉換

source型別

返回整數

長度為 source 的初始化陣列;

字串按照指定的 encoding 將字串轉換為位元組序列;

可迭代型別

元素必須為[0 ,255] 中的整數;

與 buffer 介面一致的物件

此物件也可以被用於初始化 bytearray。

沒有輸入任何引數

預設就是初始化陣列為0個元素。

參考:

python struct模組 用於物件的壓縮

函式 return explain pack fmt,v1,v2 string 按照給定的格式 fmt 把資料轉換成字串 位元組流 並將該字串返回.pack into fmt,buffer,offset,v1,v2 none 按照給定的格式 fmt 將資料轉換成字串 位元組流 並將位元組流寫入以of...

Python struct與小端儲存

在使用python 實現字元向位元組資料型別轉換的時候,python沒有提供專門處理位元組的資料型別,不過python提供了乙個struct模組提供bytes和其他二進位制資料型別的轉換 pack 將任意資料型別轉變為bytes資料型別 import struct struct.pack i 102...

time模組和os模組,json模組

import time def month n time.local struct time time.strptime y m 1 y m d print struct time return time.mktime struct time print month 2 ret time.local...