google/flatbuffers

GitHub: google/flatbuffers

一款支持零拷贝访问的高效跨平台序列化库,无需解析即可直接读取序列化数据。

Stars: 25610 | Forks: 3506

# ![logo](https://flatbuffers.dev/assets/flatbuffers_logo.svg) FlatBuffers ![构建状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/416e36b3d8005607.svg) [![BuildKite status](https://badge.buildkite.com/7979d93bc6279aa539971f271253c65d5e8fe2fe43c90bbb25.svg)](https://buildkite.com/bazel/flatbuffers) [![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/flatbuffers.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:flatbuffers) [![Discord Chat](https://img.shields.io/discord/656202785926152206.svg)](https:///discord.gg/6qgKs3R) [![Twitter Follow](https://img.shields.io/twitter/follow/wvo.svg?style=social)](https://twitter.com/wvo) [![Twitter Follow](https://img.shields.io/twitter/follow/dbaileychess.svg?style=social)](https://twitter.com/dbaileychess) **FlatBuffers** 是一个跨平台序列化库,旨在实现最大的内存效率。它允许你直接访问序列化数据,而无需先进行解析/解包,同时仍具有出色的向前/向后兼容性。 ## 快速入门 1. 构建 FlatBuffers 编译器 (`flatc`) 使用 `cmake` 为你的平台创建构建文件,然后执行编译(Linux 示例)。 cmake -G "Unix Makefiles" make -j 2. 定义你的 FlatBuffer schema (`.fbs`) 编写 [schema](https://flatbuffers.dev/flatbuffers_guide_writing_schema.html) 来定义你想要序列化的数据。参见 [monster.fbs](https://github.com/google/flatbuffers/blob/master/samples/monster.fbs) 示例。 3. 为你的语言生成代码 使用 `flatc` 编译器处理你的 schema 并生成特定语言的代码: ./flatc --cpp --rust monster.fbs 这将生成 `monster_generated.h` 和 `monster_generated.rs` 文件。 4. 序列化数据 使用生成的代码以及 `FlatBufferBuilder` 来构建你的序列化 buffer。([`C++` 示例](https://github.com/google/flatbuffers/blob/master/samples/sample_binary.cpp#L24-L56)) 5. 传输/存储/保存 Buffer 根据你的需要使用序列化后的 buffer。将其发送给他人、保存以备后用等等... 6. 读取数据 使用生成的访问器从序列化 buffer 中读取数据。 它不需要相同的语言或 schema 版本,FlatBuffers 确保数据在不同语言和 schema 版本之间可读。请参阅读取由 `C++` 写入的数据的 [`Rust` 示例](https://github.com/google/flatbuffers/blob/master/samples/sample_binary.rs#L92-L106)。 ## 文档 **请访问我们的 [着陆页][] 来浏览我们的文档。** ## 支持的操作系统 - Windows - macOS - Linux - Android - 以及任何其他具有较新 C++ 编译器(C++ 11 及更高版本)的平台 ## 支持的编程语言 为许多流行语言提供代码生成和运行时库。 1. C 2. C++ - [snapcraft.io](https://snapcraft.io/flatbuffers) 3. C# - [nuget.org](https://www.nuget.org/packages/Google.FlatBuffers) 4. Dart - [pub.dev](https://pub.dev/packages/flat_buffers) 5. Go - [go.dev](https://pkg.go.dev/github.com/google/flatbuffers) 6. Java - [Maven](https://search.maven.org/artifact/com.google.flatbuffers/flatbuffers-java) 7. JavaScript - [NPM](https://www.npmjs.com/package/flatbuffers) 8. Kotlin 9. Lobster 10. Lua 11. PHP 12. Python - [PyPI](https://pypi.org/project/flatbuffers/) 13. Rust - [crates.io](https://crates.io/crates/flatbuffers) 14. Swift - [swiftpackageindex](https://swiftpackageindex.com/google/flatbuffers) 15. TypeScript - [NPM](https://www.npmjs.com/package/flatbuffers) 16. Nim ## 版本控制 FlatBuffers 不遵循传统的 SemVer 版本控制(参见 [理由](https://github.com/google/flatbuffers/wiki/Versioning)),而是使用发布日期的格式。 ## 贡献 * [FlatBuffers Issues Tracker][] 用于提交问题。 * [stackoverflow.com][] 及 [`flatbuffers` tag][] 用于有关 FlatBuffers 的任何问题。 *要为此项目做出贡献,* 请参阅 [CONTRIBUTING][]。 ## 社区 * [Discord Server](https:///discord.gg/6qgKs3R) ## 安全 请参阅我们的 [安全策略](SECURITY.md) 以报告漏洞。 ## 许可 *Flatbuffers* 根据 Apache License, Version 2.0 授权。有关完整的许可文本,请参阅 [LICENSE][]。
标签:Bash脚本, C++, DNS 反向解析, fbs, FlatBuffers, flatc, Go, Google, IDL, JS文件枚举, Nuclei, Python, rizin, RPC, Ruby工具, Rust, 二进制格式, 内存高效, 协议缓冲区, 反序列化, 可视化界面, 嵌入式系统, 序列化, 序列化库, 接口定义语言, 数据交换, 数据可视化, 数据擦除, 无后门, 无解析, 日志审计, 模式定义, 游戏开发, 网络流量审计, 逆向工具, 零拷贝, 高性能计算