FlatBuffers使用總結 1

2021-09-24 15:13:03 字數 1727 閱讀 5467

2.編譯flatbuffer

解壓flatbuffers-master.zip檔案檔案,使用vs2015開啟flatbuffers-master\build\vs2015\flatbuffers.sln檔案進行編譯。編譯後生成的檔案如下:

(1).flatc.exe - 編譯schema檔案、生成**

(2).flatsamplebinary.exe - 測試程式,將二進位制轉換為c++物件

(3).flatsampletext.exe - 測試程式,將json轉換為c++物件

(4).flattests.exe - 測試flatbuffers

3.編寫test.fbs檔案

struct kv

table testobj

root_type testobj;

4.然後利用"flatc.exe"生成.**件,並使用此.**件

int _tmain(int argc, _tchar* ar**)

; auto kv = kv(1, 1.0);

auto name = fbb.createstring("123");

auto vec = fbb.createvector(v);

testobjbuilder builder(fbb);

builder.add_id(100);

builder.add_name(name);

builder.add_flag(1);

builder.add_list(vec);

builder.add_kv(&kv);

fbb.finish(builder.finish());

// 註冊

const char* names = obj->name()->c_str();

return 0;

}

5.json與c++物件相互轉換

flatbuffer的測試程式中有json與c++物件相互轉換的例子,但是不夠方便,在這裡我們可以封裝一下。

flatbufferjsonfactory.h

#include "typebind.h" // 詳見我的另一篇博文"c++模板之型別與資料繫結"

class flatbufferjsonfactory

std::string path; // fbs檔案路徑

flatbuffers::parser* parser; // flatbuffers解析器

};public:

// 將json字串轉換為了物件緩衝區

templatestd::string parserjson(const std::string& s)

// 將物件快取轉換為json字串

templatestd::string tojson(const void* buffer)

// 註冊

templatevoid register(const std::string& path)

templateconst parserinfo& getparser()

return info;

}static flatbufferjsonfactory& instance()

private:

flatbufferjsonfactory() {}

typebindm_map;

};

經典博文參考:

記一次FlatBuffers的簡單使用

其他命令使用 binary to json 這裡只記錄flatbuffers的簡單使用步驟,不涉及flatbuffers的介紹及原理,平台windows,語言c git clonecmake g visual studio 16 關於scheme檔案介紹及語法,可檢視官方文件介紹 monster.f...

EJunGrid使用總結

1 1。0版沒有實現垂直方向上的對齊,procedure tobgui reportdesign.griddrawcelltext acanvas tcanvas const arect trect const acoord tpoint agrid tzjgrid const text strin...

SDRAM使用總結

1,sdram的位址線,在我們一般用的什麼sram啊,psram啊,ram啊,一般而言都是有多少根位址線,然後可以算出定址空間,比如有11根位址線,那定址空間就是2的11次方減1。但是sdram是分列位址和行位址的,行 列位址線是復用的,所以有時候我們看到說定址空間有多大多大,但是看看位址線怎麼就那...