我想將某些基本類型編碼/解碼爲二進制文件/從二進制文件解碼。在C++中對二進制對象進行編碼/解碼的標準方法
測試代碼可能如下所示。
int main()
{
int iter = 0;
char* binary = new char[100];
int32_t version = 1;
memcpy(binary, &version, sizeof(int32_t));
iter+=sizeof(int32_t);
const char* value1 = "myvalue";
memcpy(binary+iter, value1, strlen(value1));
iter+=strlen(value1);
double value2 = 0.1;
memcpy(binary+iter, &value2, sizeof(double));
#warning TODO - big/small endian - fixed type length
return 0;
}
但是我仍然需要解決很多問題,比如endian和fixed類型的長度。
所以我想知道是否有一個標準的方式來實現這一點。
同時,我不想使用任何第三方實現,例如Boost等。因爲我需要保持我的代碼簡單和獨立。
如果在Objc
中有一個像NSCoding
這樣的功能/類,它將是最好的。我想知道在C++標準庫中是否有相同的東西。
一個標準的方式不存在這樣的高級功能,重塑車輪看起來不像一個好的設計恕我直言,只是堅持到許多圖書館之一來管理這個[flatbuffers](https: //google.github.io/flatbuffers/)或[protobuf](https://developers.google.com/protocol-buffers/) – Jack
如果您注意類似於C++的內容,則無法在C++中保持簡單且獨立的代碼endian,類型長度,填充等。 – Zefick
我會建議使用FlatBuffers庫。它將生成跨平臺代碼,用於從廣泛範圍爲任何您想要的語言進行序列化/反序列化數據。 – Zefick