4

我有这个从 Adob​​e Presenter 7 返回的字符串。它被称为 suspend_data 并且类型为 CMIString4096 (由文档)

CMIString4096 一组最大长度为 4096 个字符的 ASCII 字符。

这是字符串:

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,所以只有其中的函数适用。

4

3 回答 3

4

cmi.suspend_data 字段中存储的数据只是一个数据桶,SCO(内容)可以使用它来保持其当前状态。数据没有语义含义或定义的结构。在许多情况下,可以猜测数据的含义或对其进行逆向工程,但 Adob​​e Presenter 生成的内容似乎并非如此。

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

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

SCORM 提供了相当多的其他数据模型元素,它们确实具有与课程当前状态相关的特定含义。这是所有可用数据模型元素的列表。SCORM TestTrack 调试日志还将显示 Adob​​e Presented 内容使用了哪些数据模型元素。

于 2009-06-03T17:21:52.493 回答
1

我不认为 SCORM 定义了 suspend_data 字段包含的内容或它的格式。这完全取决于内容/课程(在您的情况下为 Adob​​e Presenter),但它只能是文本,并且限制为 4096 个字符。

内容可以使用此字段来存储任何类型的状态,该状态应在下次启动时传递回内容。

于 2009-06-03T13:10:42.310 回答
1

成立

13. cmi.suspend_data

读/写

旨在充当存储 SCO 希望保留到后续会话的任何信息的位置。

这里。因此,正如Martin所写,SCORM 只定义了数据类型,而不是cmi.suspend_data的编码或内容。也许可以帮助您确定编码。

于 2009-06-03T13:23:59.507 回答