如何在 C++ 中将不同的数据类型转换为字节?
How to convert different data-types to bytes in c++?
我的结构如下:
typedef struct{
float distance;
float reflectivity;
}data_point;
typedef struct{
int flag;
float Azimuth;
data_point points[32];
}data_block;
- A
data point
在数据包中由三个字节表示 - 两个字节 distance
和一个字节校准 reflectivity
。距离是一个无符号整数。它具有 2 毫米的粒度。因此,报告的值 51,154 表示 102,308 mm 或 102.308 m。校准 reflectivity
以 0 到 255 的比例报告。仰角 (ω) 是根据数据块内数据点的位置推断的。
flag
从浮点数到 2 个字节(常量 0xFFEE)
- 两个字节的
azimuth
值(α)出现在每个数据块开头的标志字节之后。方位角是无符号整数。它表示以百分之一度为单位的角度。因此,原始值 27742 应解释为 277.42°
如何创建 100 字节二进制数据的向量? (2 + 2 +(32x3))?
您可以:
- 使用(自定义)解决方案,只要指示编译器不填充数据
- 依靠序列化库。你可以例如使用 SerializeToArray() provided by Google's protobuf library
我的结构如下:
typedef struct{
float distance;
float reflectivity;
}data_point;
typedef struct{
int flag;
float Azimuth;
data_point points[32];
}data_block;
- A
data point
在数据包中由三个字节表示 - 两个字节distance
和一个字节校准reflectivity
。距离是一个无符号整数。它具有 2 毫米的粒度。因此,报告的值 51,154 表示 102,308 mm 或 102.308 m。校准reflectivity
以 0 到 255 的比例报告。仰角 (ω) 是根据数据块内数据点的位置推断的。 flag
从浮点数到 2 个字节(常量 0xFFEE)- 两个字节的
azimuth
值(α)出现在每个数据块开头的标志字节之后。方位角是无符号整数。它表示以百分之一度为单位的角度。因此,原始值 27742 应解释为 277.42°
如何创建 100 字节二进制数据的向量? (2 + 2 +(32x3))?
您可以:
- 使用(自定义)解决方案,只要指示编译器不填充数据
- 依靠序列化库。你可以例如使用 SerializeToArray() provided by Google's protobuf library