我有一组调试数据,它们具有固定长度,但内容可变。基本上它来自C联合代码:
union Foo{
__fp16 half[];
float full[];
int8_t int8[];
uint8_t uint8[];
int16_t int16[];
uint16_t uint16[];
int32_t int32[];
uint32_t uint32[4];
}
所以在python中我使用:
在Bytes数组中解析它struct.Struct('16B').unpack_from(data);
数据如下所示:
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 226, 196, 116, 0, 0, 0)
在这种情况下,数据填充“fp16”。其他数据类型很容易提取,但如何提取一半? 如何将其提取到普通的python“float”?
我试过这个,但我的版本的Struct版不支持'e':
struct.Struct('8e').unpack_from(data)