开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 512|回复: 13
收起左侧

[易源码分享] 关于对进制转换与N进制的研究与探讨小白探讨大神看个乐子

[复制链接]
发表于 2024-12-10 17:09:26 | 显示全部楼层 |阅读模式   福建省三明市
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
本帖最后由 Alan艾伦 于 2024-12-11 00:29 编辑

      在日常的进制转换操作中,咱们一般都是采用字符与拼音来进行的哦,注意啦,是拼音而非英文,毕竟咱们易语言主打拼音嘛,开个小玩笑。不过呢,这也在很大程度上限制了进制转换所能达到的上限。我在全键盘范围内仔细搜寻后发现,算上那些因各种特殊缘由(这里的特殊缘由是基于我个人使用场景而无法使用的情况,就不深入探讨啦)不能用的字符,极限也只能凑出 90 个。

       于是我突发奇想,咱们中国汉字可有好几万个字符呢,为何不将其用于进制转换呢?这其实也可当作一种加密手段。如此一来,不但能够把冗长的 16 进制文本大幅缩减,而且众多的汉字字符足以提供丰富的加密选择。

       例如,将一串数字先转换为特定规则下的汉字组合形式,就像把数字 “12345” 按照自行设定的汉字对应规则转换为 “山河日月星”,只有知道对应规则的人才能还原。再比如,对于一段十六进制数据 “AB CD EF”,可以依据独特的汉字编码体系转换为 “春风秋雨冬雪”,这样就实现了加密与进制转换的融合,外人很难轻易解读其中含义。
        以下是一个非常简单且初步的示例代码思路,用于将简单数字基于自定义的汉字映射规则来模拟类似利用汉字做 “进制转换”(加密)及反向转换(解密)的过程,实际应用中你可以根据具体复杂需求拓展和完善。
加密(类似用汉字做特殊进制转换表示)示例代码

  
子程序名返回值类型公开备 注
_按钮1_被单击  
变量名类 型静态数组备 注
数字整数型 
数字 = 到整数 (编辑框1.内容)  ' 这里可以替换为你想要转换的实际数字
编辑框2.内容 = 十进制汉字加密 (数字)
子程序名返回值类型公开备 注
十进制汉字加密文本型 
参数名类 型参考可空数组备 注
十进制数整数型
变量名类 型静态数组备 注
余数整数型 
结果文本型 
进制符表文本型 
计次整数型 
结果 = “”
进制符表 = “天地人和此为华夏圣道乾象崇巍御时序迁易辰宿列张玄理奥赜纳于幽微斯乃造化枢机坤势绵衍滋卉木葱郁原隰腴沃群有凭依而盛可谓万汇本根贤寰瀛间处膺灵明睿哲仰眺昊穹之杳渺俯睨厚载沉雄感”
判断循环首 (十进制数 > 0)
余数 = 十进制数 % 84
十进制数 = 十进制数 ÷ 84
调试输出 (余数)
结果 = 取文本中间 (进制符表, 余数 × 2 - 1, 2) + 结果
调试输出 (结果)
判断循环尾 ()
返回 (结果)


i支持库列表   支持库注释   
spec特殊功能支持库

解密(还原回原来数字)示例代码
  
[e=4].版本 2
子程序名返回值类型公开备 注
_按钮2_被单击  
变量名类 型静态数组备 注
加密汉字文本文本型 
加密汉字文本 = 编辑框2.内容
编辑框3.内容 = 到文本 (十进制汉字解密 (加密汉字文本))
子程序名返回值类型公开备 注
十进制汉字解密整数型 
参数名类 型参考可空数组备 注
六十四进制数文本型
变量名类 型静态数组备 注
数字整数型 
结果整数型 
i整数型 
进制符表文本型 
结果 = 0
数字 = 0
进制符表 = “天地人和此为华夏圣道乾象崇巍御时序迁易辰宿列张玄理奥赜纳于幽微斯乃造化枢机坤势绵衍滋卉木葱郁原隰腴沃群有凭依而盛可谓万汇本根贤寰瀛间处膺灵明睿哲仰眺昊穹之杳渺俯睨厚载沉雄感”
计次循环首 (取文本长度 (六十四进制数) ÷ 2, i)
数字 = 寻找文本 (进制符表, 取文本中间 (六十四进制数, i × 2 - 1, 2), , )
结果 = 结果 × 84 + 数字 ÷ 2 + 1
计次循环尾 ()
返回 (结果)

    在易语言中创建一个窗口,添加两个按钮(按钮1用于加密,按钮2用于解密)以及三个编辑框(编辑框1可用于输入原始数字等,编辑框2用于显示加密后的汉字,编辑框3用于显示解密还原后的数字),将上述代码分别放入对应的按钮单击事件和相应的子程序定义位置,运行程序后,点击按钮就能看到基本的效果。

           不过要注意的是,这只是一个极其简单的示意,真正用于复杂进制转换和加密用途,需要精心设计更科学合理的汉字映射规则、考虑字符编码兼容性、处理不同长度和类型数据等诸多细节问题,同时也要考虑到这种简单方式安全性其实很有限,只是一种思路探索哦。

2024年12月10日18点47分


经过对前人代码进制的查看与研究改进了我的代码更新了代码,想要多少进制就可以多少进制只要替换
  
子程序名返回值类型公开备 注
十进制汉字加密文本型 
参数名类 型参考可空数组备 注
十进制数整数型
变量名类 型静态数组备 注
余数整数型 
结果文本型 
进制符表文本型 
计次整数型 
结果 = “”
进制符表 = “天地人和此为华夏圣道乾象崇巍御时序迁易辰宿列张玄理奥赜纳于幽微斯乃造化枢机坤势绵衍滋卉木葱郁原隰腴沃群有凭依而盛可谓万汇本根贤寰瀛间处膺灵明睿哲仰眺昊穹之杳渺俯睨厚载沉雄感”  ' 更多进制就修改这里记得这里添加不重复的文本即可
判断循环首 (十进制数 > 0)
余数 = 十进制数 % 84  ' 更多进制就修改这里记得这里是文本长度/2
十进制数 = 十进制数 ÷ 84  ' 更多进制就修改这里记得这里是文本长度/2
调试输出 (余数)
结果 = 取文本中间 (进制符表, 余数 × 2 - 1, 2) + 结果  ' 因为汉字占用两个长度所以*2
调试输出 (结果)
判断循环尾 ()
返回 (结果)
子程序名返回值类型公开备 注
十进制汉字解密整数型 
参数名类 型参考可空数组备 注
六十四进制数文本型
变量名类 型静态数组备 注
数字整数型 
结果整数型 
i整数型 
进制符表文本型 
结果 = 0
数字 = 0
进制符表 = “天地人和此为华夏圣道乾象崇巍御时序迁易辰宿列张玄理奥赜纳于幽微斯乃造化枢机坤势绵衍滋卉木葱郁原隰腴沃群有凭依而盛可谓万汇本根贤寰瀛间处膺灵明睿哲仰眺昊穹之杳渺俯睨厚载沉雄感”  ' 更多进制就修改这里记得这里添加不重复的文本即可
计次循环首 (取文本长度 (六十四进制数) ÷ 2, i)  ' 因为汉字占用两个长度所以/2
数字 = 寻找文本 (进制符表, 取文本中间 (六十四进制数, i × 2 - 1, 1), , )
结果 = 结果 × 84 + 数字 ÷ 2 + 1  ' 更多进制就修改这里 结果 = 结果 × 修改这里 + 数字 ÷ 2 + 1
计次循环尾 ()
返回 (结果)


i支持库列表   支持库注释   
spec特殊功能支持库



经过这次的改进已经能实现N进制的转换  只要汉字不重复就可以实现跟多进制  当然如果易语言不支持这个汉字那个另说只能找易语言作者喝喝茶问问为什么不支持了哈哈  开个小玩笑!

当然有个很有趣的猜想就是看起来是一个平平无奇的小作文但是其实是一张美女图片 哈哈你觉得有没有意思!

测试了代码还有很多地方本人无法实现如果有相同兴趣的大佬愿意一起研究一下的可以帮忙修饰一下代码不胜感谢

找了2500个汉字想做个2500进制的结果发现行不通代码如下不知有没有大佬能帮忙修改一下

  
常量名称常量值公 开备 注
进制符表<文本长度: 5000> 

子程序名返回值类型公开备 注
十进制转2500进制汉字加密文本型 
参数名类 型参考可空数组备 注
十进制数整数型
进制符表文本型一段不重复的汉字来标识进制多少个汉字多少进制,留空默认5000进制
变量名类 型静态数组备 注
余数整数型 
结果文本型 
进制符表文本型 
计次整数型 
进制整数型 
结果 = “”
如果真 (进制符表 = “”)
进制符表 = #进制符表  ' 更多进制就修改这里记得这里添加不重复的文本即可
进制 = 取文本长度 (进制符表) ÷ 2
判断循环首 (十进制数 > 0)
余数 = 十进制数 % 进制  ' 更多进制就修改这里记得这里是文本长度/2
调试输出 (余数)
十进制数 = 十进制数 ÷ 进制  ' 更多进制就修改这里记得这里是文本长度/2
结果 = 取文本中间 (进制符表, 余数 × 2 - 1, 2) + 结果  ' 因为汉字占用两个长度所以*2
判断循环尾 ()
返回 (结果)
子程序名返回值类型公开备 注
十进制转2500进制汉字解密整数型 
参数名类 型参考可空数组备 注
二五零零进制数文本型
进制符表文本型一段不重复的汉字来标识进制多少个汉字多少进制,留空默认5000进制
变量名类 型静态数组备 注
数字整数型 
结果整数型 
i整数型 
进制整数型 
结果 = 0
数字 = 0
如果真 (进制符表 = “”)
进制符表 = #进制符表  ' 更多进制就修改这里记得这里添加不重复的文本即可
进制 = 取文本长度 (进制符表) ÷ 2
计次循环首 (取文本长度 (二五零零进制数) ÷ 2, i)  ' 因为汉字占用两个长度所以/2计次循环首 ()
数字 = 寻找文本 (进制符表, 取文本中间 (二五零零进制数, i × 2 - 1, 2), , )
结果 = 结果 × 进制 + 数字 ÷ 2 + 1  ' 更多进制就修改这里 结果 = 结果 × 修改这里 + 数字 ÷ 2 + 1
计次循环尾 ()
返回 (结果)


i支持库列表   支持库注释   
spec特殊功能支持库
上个源码吧里面有好多进制转换



进制研究.e

33.21 KB, 下载次数: 1, 下载积分: 精币 -2 枚

屏幕截图 2024-12-11 002354.png

结帖率:100% (7/7)

签到天数: 18 天

发表于 2024-12-15 01:24:22 | 显示全部楼层   浙江省温州市
6666666666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:78% (7/9)

签到天数: 23 天

发表于 2024-12-12 21:55:29 | 显示全部楼层   安徽省淮北市
思路不错,学习下
回复 支持 反对

使用道具 举报

发表于 2024-12-12 13:35:10 | 显示全部楼层   浙江省温州市
学习一下学习一下
回复 支持 反对

使用道具 举报

结帖率:73% (8/11)

签到天数: 17 天

发表于 2024-12-12 10:36:28 | 显示全部楼层   河南省焦作市

感谢分享
感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)

签到天数: 25 天

发表于 2024-12-11 12:29:08 | 显示全部楼层   山东省淄博市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)

签到天数: 16 天

发表于 2024-12-11 10:09:09 | 显示全部楼层   广西壮族自治区玉林市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 20 天

发表于 2024-12-11 09:16:23 | 显示全部楼层   广东省汕头市
感谢大神分享~!
回复 支持 反对

使用道具 举报

结帖率:100% (14/14)

签到天数: 15 天

发表于 2024-12-10 20:31:39 | 显示全部楼层   广东省江门市
  谢谢分享,支持开源
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 25 天

发表于 2024-12-10 20:04:23 | 显示全部楼层   辽宁省丹东市
梦幻1096 发表于 2024-12-10 17:40
你的意思就相当于替换汉字字符映射表,解密的时候在替换回来,但是汉字占用两个字节,加密可以,但是做不到 ...

看来你是懂主流加密算法的
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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