需求来源
因为最近一直在写 Android 蓝牙相关的 App,但是我发现 Kotlin 这门语言来操作字节流很不方便。 比如 CRC/BCC 校验,双字节转换 int16 都不方便。 而且之前还有微信小程序的蓝牙处理逻辑用 js 写的,连 js 都比 kotlin 操作字节流方便。但是也很麻烦。 远不如 c/c++ 代码直观。再就是我还有一套蓝牙网关直连服务器 golang 服务端的一套代码。
需要同时维护三套不同语言的代码,实现同一个逻辑,维护成本很高,而且没有意义。kotlin 和 js 这两个语言实在没有深究的兴趣。
于是我想,是否可以把蓝牙数据包的逻辑改用 c/c++ 编写,然后
- c++ -> wasm 跑在网页/小程序。还能避免 js 代码被剽窃
- c++ -> jni 跑在 android / windows
如果能解决 golang 到 c++ 的转换, 这样就能解决三端,用同一门语言 golang 编写。
golang 的优势
相对 python / js 而言,golang 有类型的概念,而且代码有统一格式规范,非常适合解析。 且 golang 的语法及内置数据类型,结构体,跟 C 很像,转换起来也更简单。
方案一
https://www.codeconvert.ai/golang-to-c++-converter
这是一个在线的转换工具,效果如下
但是这个在线工具有免费限额。
方案二
https://github.com/xyproto/go2cpp
这是一个开源的实现,从代码看,就是通过 golang 将 go 源文件逐行解析,转换为了 cpp 的代码。
这样就非常靠谱了,而且即便遇到问题也能自己解决。
我的使用场景也简单,只需要将简单的函数转换即可,都不需要将整个项目转换,所以看上去是非常可行的一个方案。
方案三
在 ChatGPT 这么成熟的时代,用 AI 做代码转换应该很靠谱了,但是保险起见用第二套方案更稳妥一些。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式