协议格式:
1.uint16 消息长度 msgLen,下面的 2,3,4 的总 byte 长度,不包括 msgLen 本身,2,3,4 统称为 msgData
2.uint8 校验字段,算法如下:
发送的时候:
var cbCheckCode byte=0
for i = 1; i < msgLen; i++ {
cbCheckCode += msgData[i]
}
result = ^cbCheckCode + 1//然后把结果 result 写入 uint8 校验字段 msgData[0]
接收的时候:
var cbCheckCode byte=msgData[0]
for i = 1; i < msgLen; i++ {
cbCheckCode += msgData[i]
}
if 0 != cbCheckCode {
return//校验结果有误,报错
}
消息数据:
3.uint32 消息号:uint32(mainCmdID) | uint32(subCmdID)<<16,mainCmdID (主消息号)和 subCmdID (子消息号)都是 uint16
4.byte 字节流,消息数据 data,一般是 struct 的结构体数据转换成字节流,到时候看具体用到的数据类型再说怎么转换,比如 string 类型,转换成字节流的话,前面 2 个字节表示长度,后面的就是 string 的内容
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.