如何使用 ctypes 将字节转换为浮点数?

我想转换b'\xd8\x0fI@'成一个c_float. 我正在寻找类似的东西:

>>> c_float(bytes=b'\xd8\x0fI@').value
3.1415


慕妹3146593
浏览 79回答 2
2回答

慕神8447489

使用联合:import ctypes as ctclass 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_convertprint(conv.my_float)  # prints 3.141592025756836您可能还想在进行转换之前检查长度。如果没有这样的检查,ValueError如果您尝试使用太长的字节序列,您将得到一个,但如果您使用太短的字节序列,它不会提醒您。(类型检查会自动为您完成。)if len(data_to_convert) != len(conv.my_bytes):    raise ValueError

暮色呼如

使用结构库中的unpackimport&nbsp;ctypes,&nbsp;struct ctypes.c_float(struct.unpack('<f',&nbsp;b'\xd8\x0fI@')[0])&nbsp;#&nbsp;c_float(3.141592025756836)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python