php – 什么是CMIString4096以及如何在其中提取数据?

我有这个字符串,我从Adobe Presenter 7返回.它叫做suspend_data,类型为CMIString4096 (by the docs)

CMIString4096 A set of ASCII characters with a maximum length
of 4096 characters.

这是字符串:

aG1111111000000000BB001EC%2EacC%7E%24GS%2AayjHm110BKCBBB0B0EBAB1B1ED%2EicC%7E%24GS%2AlfkHm110BKDBCB0B0EBBB0B0EBAB1B1EE%2EwcC%7E%24GS%2ACBlHm100BKDB2BCBCDB1BABBDB0BBBADF%2E7cC%7E%24GS%2A4GmHm110BKBB0Ebl%C3%A1rRbl%C3%A1r%3Bgr%C3%A6nn%3Brau%C3%B0urB

它看起来像带有一些urlencoded字符的base64.当我urldecode()字符串时,最后几个字符类似于某些数据,但它在utf8中,然后我utf8_decode它并看到它.

aG1111111000000000BB001EC.acC~$GS*ayjHm110BKCBBB0B0EBAB1B1ED.icC~$GS*
lfkHm110BKDBCB0B0EBBB0B0EBAB1B1EE.wcC~$GS*CBlHm100BKDB2BCBCDB1BABBDB0BBBADF.
7cC~$GS*4GmHm110BKBB0EblárRblár;grænn;rauðurB

好吧,我更接近一些数据(最后),但它看起来仍然是一团糟.当我base64_decode()它我得到一些二进制混乱,但我不知道它究竟是什么.

有谁知道这些数据是什么以及我如何从中得到一些感觉?我正在使用PHP btw,因此只有其中的功能适用.

解决方法:

存储在cmi.suspend_data字段中的数据只是SCO(内容)可用于保持其当前状态的数据桶.数据没有语义含义或定义的结构.在许多情况下,数据的含义可以被猜测或反向设计,但对于Adobe Presenter生成内容,情况似乎并非如此.

suspend_data字段限制为4096个ASCII字符.对于某些SCO,这不能提供足够的存储空间来完全保持当前状态.在许多情况下,面临这种困境的内容开发者将对状态数据应用压缩算法,以便将其压缩到有限的大小.看起来这就是Adobe Presenter在这里所做的事情.我的猜测是他们将数据压缩到您找到的未编码状态,然后应用url编码以确保所有生成的字符都可以安全地发送到LMS.

暂停数据开头的1和0字符串可能是有意义的.它可能对应于学习者以前观看过的课程中的哪些幻灯片.要验证这一点,通过SCORM TestTrack(在scorm.com免费提供)等工具运行课程可能会有所帮助,并使用生成的调试日志来观察暂停数据随着用户在课程中的进展而如何变化.

SCORM提供了许多其他数据模型元素,这些元素具有与课程当前状态相关的特定含义.这是一个list of all available data model elements. SCORM TestTrack调试日志还将显示Adobe Presented内容使用的那些数据模型元素.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...