28 C++ 字节流与结构体类型互转
这里不讲 protobuf,只是一个特定情形下的特定实现。
0 前言
今天我们来介绍下 C++ 中字节流(也称字节码)与结构体类型之间是如何互转的,socket 通信中经常遇到这个问题(tcp 通道中传输的消息都是字节码),比如 ip 地址。
#include <iostream>
#include <cstring>
#include <stdexcept>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
#include <mutex>
#include <deque>
#include <condition_variable>
#include <thread>
#include <pthread.h>
#include <unistd.h>
#include <memory>
struct personal {
personal(int age = 0, std::string sex = "") : age(age), sex(sex) {};
int age;
std::string sex;
int main() {
personal p(10, "male");
// 结构体转成字节流
std::vector<char> bytes(sizeof(p));
memcpy(bytes.data(), &p, sizeof(p));
for (auto b : bytes) {
std::cout << b << " ";
std::cout << "\n";
// 字节流转成结构体