2024-09-29 23:26:32 发布
网友
我想把b'\xd8\x0fI@'转换成c_float。我正在寻找类似于:
b'\xd8\x0fI@'
c_float
>>> c_float(bytes=b'\xd8\x0fI@').value 3.1415
使用struct库中的unpack
import ctypes, struct ctypes.c_float(struct.unpack('<f', b'\xd8\x0fI@')[0]) # c_float(3.141592025756836)
使用工会:
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
在进行转换之前,您可能还需要检查长度。如果您尝试使用太长的字节序列,如果没有这样的检查,您将得到一个ValueError,但是如果您使用太短的字节序列,它将不会提醒您。(类型检查将自动为您完成。)
ValueError
if len(data_to_convert) != len(conv.my_bytes): raise ValueError
使用struct库中的unpack
使用工会:
在进行转换之前,您可能还需要检查长度。如果您尝试使用太长的字节序列,如果没有这样的检查,您将得到一个
ValueError
,但是如果您使用太短的字节序列,它将不会提醒您。(类型检查将自动为您完成。)相关问题 更多 >
编程相关推荐