代码之家  ›  专栏  ›  技术社区  ›  Ólafur Waage

什么是cmistring4096?如何提取其中的数据?

  •  4
  • Ólafur Waage  · 技术社区  · 15 年前

    我有一个从AdobePresenter7返回的字符串。它被称为suspend_data,属于cmistring4096类型 (by the docs)

    cmistring4096一组最大长度的ASCII字符 共4096个字符。

    这是字符串:

    AG1111111000000000BB001EC%2EACC%7E%24GS%2AAYJHM110BKCBBB0EBB1B1B1ED%2EICC%7E%24GS%2ALFKHM110BKDBBB0EBBB0EBB1EE%2EWCC%7E%24GS%2AACBLHM100BKDB2CBCDB1BABBBBADF%2E7CC%7E%24GS%2A4GMM110BKBB0EBL%C3%A1RRBL%C3%A1R%3BGR%C3%A6NN%3BRAU%C3%B0URB

    它看起来像base64,带有一些urlencoded字符。当我urldecode()字符串时,最后几个字符类似于一些数据,但它是UTF8格式的,然后我对它进行UTF8解码并看到这一点。

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

    好吧,我更接近一些数据(最后),但看起来还是一团糟。当我用base64解码的时候,我得到了一些二进制的混乱,但我不知道它到底是什么。

    有人知道这些数据是什么吗?我怎样才能从中得到一些感觉?我使用的是php btw,所以只有其中的函数才适用。

    3 回复  |  直到 10 年前
        1
  •  4
  •   danjah    10 年前

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

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

    挂起数据开头的1和0的字符串可能有意义。它很可能与学习者以前看过的课程幻灯片相对应。为了验证这一点,通过类似scorm testrack的工具运行课程可能会很有帮助(可在 scorm.com )并使用生成的调试日志来观察挂起数据如何随着用户的学习而变化。

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

        2
  •  1
  •   M4N    15 年前

    我不认为scorm定义了suspend_数据字段包含的内容或格式。 这完全取决于内容/课程(在您的例子中是Adobe Presenter),但它只能是文本,并且限制为4096个字符。

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

        3
  •  1
  •   Community Ramakrishna.p    7 年前

    发现

    13。CMI.挂起数据

    读/写

    用作存放地点 上海合作组织想要的任何信息 持续到下一个会话。

    在里面 here . 因此 Martin 写入的scorm只定义数据类型,而不定义 CMI.挂起数据 . 也许 this 可以帮助您确定编码。