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

时间:2022-01-22 16:01:31

I have this string that I get back from Adobe Presenter 7. It's called suspend_data and is of type CMIString4096 (by the docs)

我有这个字符串,我从Adobe Presenter 7返回。它叫做suspend_data,类型为CMIString4096(由文档提供)

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

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

This is the string:

这是字符串:

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

It looks like base64 with some urlencoded characters. When i urldecode() the string, the last few characters resemble some data but it's in utf8, then i utf8_decode it and see this.

它看起来像带有一些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

Ok i'm closer to some data (at the end), but it still looks like it's a mess. When i base64_decode() it i get some binary mess, but i don't know what on earth it is.

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

Does anyone know what this data is and how i can get some sense out of it? I'm using PHP btw so only functions within it are applicable.

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

3 个解决方案

#1


The data stored in the cmi.suspend_data field is simply a bucket of data that the SCO (the the content) can use to persist its current state. There is no semantic meaning or defined structure to the data. In many cases, the meaning of the data can be guessed at or reversed engineered, but that does not appear to be the case in with content produced by Adobe Presenter.

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

The suspend_data field is limited to 4096 ASCII characters. For some SCOs this doesn't provide enough storage to fully persist the current state. In many cases, a content developer faced with this predicament will apply a compression algorithm to the state data in order to squeeze it into the limited size. It looks like that is what Adobe Presenter is doing here. My guess is that they compressed their data to the unencoded state that you found, then applied url encoding to ensure that all of the resulting characters were safe to send to the LMS.

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

The string of 1's and 0's at the start of the suspend data might be something meaningful. It could likely correspond to which of the slides in the course have been previously viewed by the learner. To verify this, it might be helpful to run the course through a tool like SCORM TestTrack (freely available at scorm.com) and use the generated debug logs to watch how the suspend data changes as the user progresses through the course.

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

SCORM provides quite a few other data model elements which do have a specific meaning relating to the current status of the course. Here is a list of all available data model elements. The SCORM TestTrack debug logs will also show you which of those data model elements Adobe Presented content uses.

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

#2


I don't think that SCORM defines what the suspend_data field contains or in what format it is. This is entirely up to the content/lesson (Adobe Presenter in your case), but it can only be text and is limited to 4096 characters.

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

This field can be used by the content to store any kind of state which should be passed back to the content the next time it is started.

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

#3


Found

13. cmi.suspend_data

Read / Write

读/写

Intended to act as a location to store any information that a SCO would like to persist until a subsequent session.

旨在作为存储SCO希望持续到下一个会话的任何信息的位置。

in here. So as Martin wrote SCORM only defines the data type and not the encoding or the content of cmi.suspend_data. Perhaps this could help you in determining the encoding.

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

#1


The data stored in the cmi.suspend_data field is simply a bucket of data that the SCO (the the content) can use to persist its current state. There is no semantic meaning or defined structure to the data. In many cases, the meaning of the data can be guessed at or reversed engineered, but that does not appear to be the case in with content produced by Adobe Presenter.

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

The suspend_data field is limited to 4096 ASCII characters. For some SCOs this doesn't provide enough storage to fully persist the current state. In many cases, a content developer faced with this predicament will apply a compression algorithm to the state data in order to squeeze it into the limited size. It looks like that is what Adobe Presenter is doing here. My guess is that they compressed their data to the unencoded state that you found, then applied url encoding to ensure that all of the resulting characters were safe to send to the LMS.

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

The string of 1's and 0's at the start of the suspend data might be something meaningful. It could likely correspond to which of the slides in the course have been previously viewed by the learner. To verify this, it might be helpful to run the course through a tool like SCORM TestTrack (freely available at scorm.com) and use the generated debug logs to watch how the suspend data changes as the user progresses through the course.

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

SCORM provides quite a few other data model elements which do have a specific meaning relating to the current status of the course. Here is a list of all available data model elements. The SCORM TestTrack debug logs will also show you which of those data model elements Adobe Presented content uses.

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

#2


I don't think that SCORM defines what the suspend_data field contains or in what format it is. This is entirely up to the content/lesson (Adobe Presenter in your case), but it can only be text and is limited to 4096 characters.

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

This field can be used by the content to store any kind of state which should be passed back to the content the next time it is started.

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

#3


Found

13. cmi.suspend_data

Read / Write

读/写

Intended to act as a location to store any information that a SCO would like to persist until a subsequent session.

旨在作为存储SCO希望持续到下一个会话的任何信息的位置。

in here. So as Martin wrote SCORM only defines the data type and not the encoding or the content of cmi.suspend_data. Perhaps this could help you in determining the encoding.

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