开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2771|回复: 16
收起左侧

[易源码分享] 7bit编码,7bit解码,把8字节编码成7字节 短xinpdu解析用到

[复制链接]
结帖率:100% (30/30)
发表于 2022-3-9 14:19:45 | 显示全部楼层 |阅读模式   辽宁省大连市
分享源码
界面截图: -
是否带模块: 纯源码
备注说明: -
最近在做短信格式pdu解析,记录并分享一下  其中用到7bit编码,7bit解码, ,说是编码解码实际是压缩
可以吧纯ansi字符的8字节压缩成7字节 ,可以让短息发送更多文字
用到精易模块 和zyjson模块
使用方法
调试输出 (编码_7bit (“5555”), “正确值:B55AAD06 ”)
调试输出 (解码_7bit (“B55AAD06”), “5555hex:35353535”)



  
子程序名返回值类型公开备 注
编码_7bit文本型 7bit编码  参考资料 https://blog.csdn.net/yizhesong/ ... tionNum=2&fps=1
参数名类 型参考可空数组备 注
文本文本型1234
变量名类 型静态数组备 注
数组_文本文本型0
二进制文本型0
i整数型 
局_临时文本文本型 
局_临时文本2文本型 
计数整数型 
文本_逐字分割 (文本, 数组_文本)
计次循环首 (取数组成员数 (数组_文本), i)
加入成员 (二进制, 取文本右边 (进制_十到二 (进制_十六到十 (字节集_字节集到十六进制 (到字节集 (数组_文本 [i])))), 7))
计次循环尾 ()
' 调试输出 (二进制)
数组_反转 (二进制)
局_临时文本 = 数组_合并 (二进制, “”)
' 调试输出 (局_临时文本)
计数 = 0
清除数组 (二进制)
判断循环首 (取文本长度 (局_临时文本) > 0)
加入成员 (二进制, 取文本右边 (局_临时文本, 8))
' 局_临时文本2 = 局_临时文本2 + 进制_十到十六 (进制_二到十 (取文本右边 (局_临时文本, 8)), )
局_临时文本 = 取文本左边 (局_临时文本, 取文本长度 (局_临时文本) - 8)
判断循环尾 ()
' 数组_反转 (二进制)
' 调试输出 (二进制)
计次循环首 (取数组成员数 (二进制), i)
' 调试输出 (进制_二到十 (二进制 [i]))
局_临时文本 = 进制_十到十六 (进制_二到十 (二进制 [i]), )
如果真 (取文本长度 (局_临时文本) = 1)
局_临时文本 = “0” + 局_临时文本

局_临时文本2 = 局_临时文本2 + 局_临时文本
计次循环尾 ()
返回 (局_临时文本2)
' 1              2              3             4
' 0110001    0110010   0110011  0110100
' 现在需要将没个字节补齐,也就是补到8位,
' 首先将1补齐,将2的最后一位补到1前面:00110001  011001  0110011 0110100
' 将2补齐,将3的最后两位不到2前面:     00110001  11011001 01100 0110100
' 将3补齐,将4的最后补到3前面:          00110001  11011001 10001100 0110
' 最后将4补齐,在最前面不上四个0:      00110001  11011001  10001100 0000110
' 这个时候1234字符串的编码就变为了: 0x31 0xd9 0x8c 0x06  该值正好就是我们的短信内容!
子程序名返回值类型公开备 注
解码_7bit文本型 参考资料 https://blog.csdn.net/wandersky0 ... m_relevant_index=12
参数名类 型参考可空数组备 注
十六进制数据文本型十六进制数据
变量名类 型静态数组备 注
字节集字节集 
二进制文本型0
i整数型 
局_临时文本文本型 
局_临时文本2文本型 
字节集 = 字节集_十六进制到字节集 (十六进制数据)
计次循环首 (取字节集长度 (字节集), i)
加入成员 (二进制, 取文本右边 (进制_十到二 (到整数 (字节集 [i])), 8))
计次循环尾 ()
' 调试输出 (“二进制”, 二进制)
数组_反转 (二进制)
局_临时文本 = 数组_合并 (二进制, “”)
' 调试输出 (局_临时文本)
清除数组 (二进制)
判断循环首 (取文本长度 (局_临时文本) > 0)
加入成员 (二进制, “0”取文本右边 (局_临时文本, 7))
局_临时文本 = 取文本左边 (局_临时文本, 取文本长度 (局_临时文本) - 7)
判断循环尾 ()
' 调试输出 (“二进制翻转后7转8”, 二进制)
计次循环首 (取数组成员数 (二进制), i)
' 调试输出 (进制_二到十 (二进制 [i]))
局_临时文本 = 进制_十到十六 (进制_二到十 (二进制 [i]), )
如果真 (取文本长度 (局_临时文本) = 1)
局_临时文本 = “0” + 局_临时文本

局_临时文本2 = 局_临时文本2 + 局_临时文本
计次循环尾 ()
返回 (局_临时文本2)

评分

参与人数 1精币 +1 收起 理由
ghost12 + 1 支持开源~!感谢分享

查看全部评分


本帖被以下淘专辑推荐:

签到天数: 20 天

发表于 2022-3-9 15:11:45 | 显示全部楼层   浙江省金华市
  
子程序名返回值类型公开备 注
Encode7bit文本型 
参数名类 型参考可空数组备 注
data文本型
变量名类 型静态数组备 注
len整数型 
i整数型 
cur整数型 
j整数型 
t文本型 
res文本型 
len = 取文本长度 (data)
i = 1
判断循环首 (i ≤ len)
判断 (i < len)
cur = 位与 (位或 (右移 (取代码 (data, i), j), 左移 (取代码 (data, i + 1), 7 - j)), 255)
cur = 位与 (右移 (取代码 (data, i), j), 255)
t = 格式化文本 (“%2.2X”, cur)
res = res + t
i = i + 1
j (j + 1) % 7
如果真 (j = 0)
i = i + 1

判断循环尾 ()
返回 (res)


i支持库列表   支持库注释   
eAPI应用接口支持库

回复 支持 反对

使用道具 举报

签到天数: 20 天

发表于 2022-3-9 15:28:07 | 显示全部楼层   浙江省金华市
解码
  
子程序名返回值类型公开备 注
Decode7bit文本型 
参数名类 型参考可空数组备 注
data文本型
变量名类 型静态数组备 注
srclen整数型 
nsrc整数型 
tmpchar整数型 
nbyte整数型 
pDst文本型 
nleft整数型 
a文本型 
srclen = 取文本长度 (data)
nsrc = 1
nbyte = 0
nleft = 0
判断循环首 (nsrc < srclen)
tmpchar = Hex2Int (取文本中间 (data, nsrc, 2))
pDst = pDst + 字符 (位与 (位或 (左移 (tmpchar, nbyte), nleft), 127))
nleft = 右移 (tmpchar, 7 - nbyte)
nbyte = nbyte + 1
如果真 (nbyte = 7)
pDst = pDst + 字符 (nleft)
nbyte = 0
nleft = 0
nsrc = nsrc + 2
判断循环尾 ()
返回 (pDst)

点评

感谢大佬分享出来,想这种偏门算法资料易语言太少了   辽宁省大连市  发表于 2022-3-9 16:36
回复 支持 反对

使用道具 举报

结帖率:82% (27/33)

签到天数: 3 天

发表于 2022-3-26 01:02:02 | 显示全部楼层   上海市上海市
全论坛易友发来贺电
回复 支持 反对

使用道具 举报

结帖率:67% (8/12)
发表于 2022-3-18 13:42:40 | 显示全部楼层   山西省太原市
顶,学习一下
回复 支持 反对

使用道具 举报

发表于 2022-3-11 13:50:00 | 显示全部楼层   山东省济南市
6666666666666666666
回复 支持 反对

使用道具 举报

签到天数: 22 天

发表于 2022-3-11 02:03:18 | 显示全部楼层   四川省成都市
666666666666666
回复 支持 反对

使用道具 举报

签到天数: 22 天

发表于 2022-3-10 01:01:39 | 显示全部楼层   四川省成都市
谢谢大佬分享 支持支持
回复 支持 反对

使用道具 举报

发表于 2022-3-9 23:29:55 | 显示全部楼层   广东省中山市
谢谢分享!
回复 支持 反对

使用道具 举报

签到天数: 18 天

发表于 2022-3-9 21:05:19 | 显示全部楼层   湖南省长沙市
支持一下,下载看看
回复 支持 反对

使用道具 举报

结帖率:100% (6/6)

签到天数: 22 天

发表于 2022-3-9 20:45:02 | 显示全部楼层   新疆维吾尔自治区昌吉回族自治州
谢谢分享!
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 18 天

发表于 2022-3-9 20:22:08 | 显示全部楼层   湖北省十堰市
支持一下,谢谢!......
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表