本项目是一个完整的AI辅助编程教程示例,演示如何使用AI工具开发网络芯片仿真中的数据位宽转换功能。项目包含完整的实现代码、测试用例和详细的教程文档。
- ✅ 数据位宽转换核心算法
- ✅ 残余数据处理和拼接
- ✅ 包边界标志维护
- ✅ 完整的单元测试覆盖
- ✅ 详细的使用示例
- ✅ 标准化的AI开发流程
- C++17编译器(GCC 7+ 或 Clang 5+)
- CMake 3.14+
- Git
# 克隆项目
git clone <repository-url>
cd ai_coding_tutorial
# 创建构建目录
mkdir build && cd build
# 配置项目
cmake ..
# 编译
make -j4
# 运行测试
./test_bitwidth_converter
# 运行演示程序
./demoai_coding_tutorial/
├── include/ # 头文件
│ ├── slice.h # 数据切片结构定义
│ └── bitwidth_converter.h # 位宽转换器接口
├── src/ # 源代码
│ └── bitwidth_converter.cpp # 位宽转换器实现
├── tests/ # 测试代码
│ └── test_bitwidth_converter.cpp # 单元测试
├── examples/ # 示例代码
│ └── demo.cpp # 功能演示程序
├── docs/ # 文档
│ └── AI_CODING_TUTORIAL.md # 详细教程
├── CMakeLists.txt # 构建配置
└── README.md # 项目说明
std::pair<Slice, Slice> BitwidthConverter::convert_bitwidth(
const Slice& current, // 当前输入slice
const Slice& residual, // 上次剩余slice
uint32_t target_width // 目标位宽(字节)
);#include "slice.h"
#include "bitwidth_converter.h"
// 创建输入数据
std::vector<uint8_t> data = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06};
Slice current(6, 100, true, false, data);
Slice residual; // 空残余
// 执行位宽转换
auto result = BitwidthConverter::convert_bitwidth(current, residual, 4);
// 获取结果
Slice output_slice = result.first; // 输出:前4字节
Slice new_residual = result.second; // 残余:后2字节项目包含11个全面的测试用例,覆盖以下场景:
- ✅ 正常位宽转换
- ✅ 数据不足目标位宽
- ✅ 数据超过目标位宽
- ✅ 残余数据拼接
- ✅ 包边界标志处理
- ✅ 空输入处理
- ✅ 异常参数处理
- ✅ 跨包数据处理
- ✅ 大数据量处理
- ✅ 连续处理场景
本项目展示了标准化的AI辅助编程流程:
- 需求分析 - 明确功能要求和约束条件
- Prompt设计 - 编写有效的AI提示词
- 代码生成 - 使用AI工具生成基础代码
- 代码审查 - 检查生成代码的质量和正确性
- 测试验证 - 编写和执行全面的测试用例
- 优化改进 - 基于测试结果进行优化
详细的AI辅助编程教程请参考:AI_CODING_TUTORIAL.md
教程内容包括:
- AI Prompt模板和优化技巧
- 代码生成和审查流程
- 测试用例设计方法
- 调试和优化建议
- 最佳实践和注意事项
欢迎提交Issue和Pull Request来改进本项目:
- Fork本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建Pull Request
本项目采用MIT许可证 - 详见 LICENSE 文件
如有问题或建议,请通过以下方式联系:
- 项目Issues: GitHub Issues
- 邮箱: your-email@example.com
感谢所有为本项目做出贡献的开发者和AI辅助编程工具的支持。