|
分享源码
界面截图: |
|
是否带模块: |
纯源码 |
备注说明: |
- |
本帖最后由 神女软件定制 于 2024-6-6 17:35 编辑
整数,文本,……,数组,自定义类型,自定义类型数组,自定义类型嵌套,类,……
不管什么形式,哪怕是数组里面是类,类里面再有自定义类型,然后自定义类型里面再有嵌套的自定义类型数组……
只要易语言里面声明的变量,都可以转换成字节集,然后可以通过这串字节集还原成和之前完全一致的对象
前提是通过什么类型转过来的,只能转回去相同的类型
变量——>字节集:序列化:自定义类型序列化 (取变量地址 (变量))
字节集——>变量:反序列化:自定义类型反序列化 (序列化字节集, 取变量地址 (变量))
变量名 | 类 型 | 静态 | 数组 | 备 注 | a | 整数型 | | | b | 整数型 | | | 结果 | 字节集 | | |
a = 123 结果 = 自定义类型序列化 (取变量地址 (a )) 调试输出 (结果 ) 自定义类型反序列化 (结果, 取变量地址 (b )) 调试输出 (b )
可能的用处是:1把运行时的对象信息保存到磁盘,后续重新加载回来,2启动线程用更丰富的参数,提供了2个附加函数,方便这个功能
temp = 申请内存 (4 + 取字节集长度 (cs_数据 ), )写到内存 (取字节集长度 (cs_数据 ), temp, )写到内存 (cs_数据, temp + 4, )返回 (temp )temp = 指针到字节集 (cs_指针 + 4, 指针到整数 (cs_指针 )) 释放内存 (cs_指针 )返回 (temp )
有一个潜在的危险是:当你的数据长度是4的倍数,并且在4字节边界查看,碰巧是你申请内存返回的一个指针,这个情况,会出问题(反序列化后值会改变,变量释放时会内存泄漏),概率应该极低了,但是这个不可避免,原理上,内部就是逐一判断,是否是有效的申请内存返回的首地址,来解析数据结构的
a = 到字节集 (申请内存 (123, )) a = 到字节集 (申请内存 (123, ) + 4 ) a = 到字节集 (申请内存 (123, )) + { 1, 2, 3 } a = { 1, 2 } + 到字节集 (申请内存 (123, )) + { 4, 5 }
源码下载:
自定义数据类型和字节集互转.e
(12.2 KB, 下载次数: 69, 售价: 1 枚 精币)
|
评分
-
查看全部评分
本帖被以下淘专辑推荐:
- · 鱼木|主题: 1560, 订阅: 152
- · 精品特辑|主题: 747, 订阅: 16
- · 希望能用到|主题: 983, 订阅: 10
- · 收藏|主题: 219, 订阅: 6
- · 好帖收藏|主题: 7, 订阅: 0
- · 更多
|