扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 160|回复: 0

[转载发布] Marshal-指定讀取其他層資料

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    昨天 18:01
  • 签到天数: 114 天

    连续签到: 4 天

    [LV.6]常住居民II

    2338

    主题

    403

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    10632
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    13401

    灌水之王

    发表于 2024-4-19 19:21:34 | 显示全部楼层 |阅读模式
    今天總算研究出Marshal的脫離順序讀取方法了...

    其實Marshal 根本不一定要照著第一層、第二層、第三層的順序讀取,

    不過今天要教各位的方法有點麻煩,

    因為這並不是直接找出第n層的位置,

    而是在檔案儲存的時候,將pos記錄下來,再從pos(文件指針)下手。

    首先這個腳本是測試專用的,

    這段代碼代表將字串壓縮、並分別以Marshal的方式存入001.rxdata 這個檔案,

    並在儲存前、儲存後各彈出寫著當前文件指針的窗口。
    1. @f = File.open("001.rxdata","wb")print @f.posMarshal.dump(Zlib::Deflate.deflate("測試字串一號"),@f)print @f.posMarshal.dump(Zlib::Deflate.deflate("測試字串二號"),@f)print @f.posMarshal.dump(Zlib::Deflate.deflate("測試字串三號"),@f)print @f.pos@f.close复制代码
    复制代码
    以上腳本測試過後,

    彈出結果順序如下:

    0,33,66,99

    接著我們便取得了三個壓縮過後的字串的位置:

    0~33 這段為壓縮過後的"測試字串一號"
    33~66 這段為壓縮過後的"測試字串二號"
    66~99 這段為壓縮過後的"測試字串三號"

    所以我們可以知道結構大約如圖:


    接著我們實際測試:
    1. @f = File.open("001.rxdata","rb")@f.pos = 66 # 將文件指針設定至測試字串三號的起始位置:66print Zlib::Inflate.inflate(Marshal.load(@f)) # 讀取後解壓並彈出 => 測試字串三號@f.pos = 33 # 將文件指針設定至測試字串二號的起始位置:33print Zlib::Inflate.inflate(Marshal.load(@f)) # 讀取後解壓並彈出 => 測試字串二號@f.pos = 0 # 將文件指針設定至測試字串一號的起始位置:0print Zlib::Inflate.inflate(Marshal.load(@f)) # 讀取後解壓並彈出 => 測試字串一號@f.close复制代码
    复制代码
    我們直接將文件指針手動設定至該資料的起始位置,

    再行Marshal.load,

    我們就可以發現,讀取的層數位置可以任意調整!




    另外說明一下:如果要存的層數很多,

    就把它改成將@f.pos分別輸出到一個新的文本即可。
                 本帖来自P1论坛作者土撥撥,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=167955  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2025-3-15 04:39 , Processed in 0.133912 second(s), 54 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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