我想轉(zhuǎn)換b'\xd8\x0fI@'成一個c_float. 我正在尋找類似的東西:>>> c_float(bytes=b'\xd8\x0fI@').value
3.1415
2 回答
慕神8447489
TA貢獻1780條經(jīng)驗 獲得超1個贊
使用聯(lián)合:
import ctypes as ct
class Convert(ct.Union):
_fields_ = (("my_bytes", ct.c_char * ct.sizeof(ct.c_float)),
("my_float", ct.c_float))
data_to_convert = b'\xd8\x0fI@'
conv = Convert()
conv.my_bytes = data_to_convert
print(conv.my_float) # prints 3.141592025756836
您可能還想在進行轉(zhuǎn)換之前檢查長度。如果沒有這樣的檢查,ValueError如果您嘗試使用太長的字節(jié)序列,您將得到一個,但如果您使用太短的字節(jié)序列,它不會提醒您。(類型檢查會自動為您完成。)
if len(data_to_convert) != len(conv.my_bytes):
raise ValueError
暮色呼如
TA貢獻1853條經(jīng)驗 獲得超9個贊
使用結(jié)構(gòu)庫中的unpack
import ctypes, struct
ctypes.c_float(struct.unpack('<f', b'\xd8\x0fI@')[0]) # c_float(3.141592025756836)添加回答
舉報
0/150
提交
取消
