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

发布于 2024-07-23 06:13:52 字数 1080 浏览 4 评论 0原文

我有一个从 Adob​​e Presenter 7 返回的字符串。它称为 suspend_data,类型为 CMIString4096 (由文档提供)

CMIString4096 具有最大长度的 ASCII 字符集 共 4096 个字符。

这是字符串:

aG1111111000000000BB001EC%2EacC%7E%24GS%2AayjHm110BKCBBB0B0EBAB1B1ED%2EicC%7E%24GS%2AlfkHm110BKDBCB0B0EBBB0B0EBAB1B1EE%2EwcC%7E%24GS%2ACBlHm100 BKDB2BCBCDB1BABBDB0BBBADF%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,因此只有其中的函数适用。

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)

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

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.

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.

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

百变从容 2024-07-30 06:13:52

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 内容使用了哪些数据模型元素。

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.

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.

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.

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.

樱娆 2024-07-30 06:13:52

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

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

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.

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.

尛丟丟 2024-07-30 06:13:52

成立

13. cmi.suspend_data

读/写

旨在充当存储位置
SCO 想要的任何信息
持续到下一个会话。

此处。 正如马丁< /a> 写的 SCORM 只定义了数据类型,而不定义编码或 cmi.suspend_data 的内容。 也许这个可以帮助您确定编码。

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.

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文