|
5精币
如题 hpsocket模块 例子中 TCP_PACK_服务端
服务端设置了包头标识 比如包头标识设置成 230 发送数据部分比如 发送了到字节集(“12”)2个字节数据
外部API 收到是 字节集:6{2,0,128,57,49,50}
已知固定规则是 前面2位字节是 数据长度 后面2位是包头指针或者数据
预处理动作如下
局_包头字节 = 字节集_取左边 (局_数据信息, 4) = {2,0,128,57}
局_包头数据 = 取字节集数据 (局_包头字节, #整数型, ) = 964689922(HP包头数值只能 0-1023 官方说明 这里只是调试显示的值)
输出信息 “参数_包头数据” | 964689922 | “包头字节” | 字节集:4{2,0,128,57}
解析代码部分如下
参数_包头数据 = 964689922
局_包头A = 右移 (参数_包头数据, 22) 正常情况下转换出来就是 230 但是如果 包头标识如果设置成 232 或 231 也能解析出来 等于 232 231
局_包头B = 位与 (参数_包头数据, 4194303) 只要包头A解析不出错的情况下 服务端发送多少数据 这里解析都是出现正常数据长度 没有问题
但是 如果HP包头标识如果设置成 232 或 231 也能解析出来 等于 232 231 这里感觉有点不对劲
如果HP包头设置比如1022 他就解析不出来了
有没有大牛知道他这个 包头A 到底是咋解析的呢 麻烦给个列子谢谢
另外还有一个帖子是相同问题 顺手一起答复了 我一起给最佳
https://bbs.125.la/forum.php?mod ... 14839264&extra=
补充内容 (2024-11-4 15:49):
列子在下面 |
最佳答案
查看完整内容
我已经删掉了。。。
你在论坛找一个汇编右移和汇编位与的代码换掉核心库的就行了
代码之前回复的内容里也有了
补充内容 (2024-11-5 19:36):
https://bbs.125.la/forum.php?mod=viewthread&tid=14761617&highlight=%E6%B1%87%E7%BC%96%2B%E8%BF%90%E7%AE%97
|