[英]How to insert elements of Enum type into vector of type uint8_t?
[英]how to convert values of type float and double into binary format and push into vector of type uint8_t?
我想知道如何將 float 和 double 的值轉換為二進制格式並推入 uint8_t 類型的向量
Eg : float x = 23.22;
double z = 2.32232;
並在序列化時將它們存儲到向量中
矢量<uint8_t> 數據。
並在反序列化時轉換回原始值。
有沒有辦法做到這一點?
如果您只需要將它們推入向量並彈出它們(如堆棧),您可以這樣做:
void push( std::vector<uint8_t> &v, float f )
{
auto offs = v.size();
v.resize( offs + sizeof( float ) );
std::memcpy( v.data() + offs, &float, sizeof( float ) );
}
float popFloat( std::vector<uint8_t> &v )
{
float f = 0;
if( v.size() >= sizeof( float ) ) {
auto offs = v.size() - sizeof( float );
std::memcpy( &f, v.data() + offs, sizeof( float ) );
v.resize( offs );
}
return f;
}
請注意,這會將它們以不可移植的格式存儲,但應該適用於將它們存儲/讀取到/從同一硬件上的文件中讀取。
您可以將這兩個函數重寫為模板,它將適用於所有整數和浮點類型( short
int
long
double
等)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.