首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DDL结构从ADTF 2读取数据

使用DDL结构从ADTF 2读取数据
EN

Stack Overflow用户
提问于 2018-05-24 21:37:24
回答 2查看 597关注 0票数 2

我正在尝试读取典型的ADTF文件。当读取块标题时,我看到块大小是96字节,减去标题长度(32),剩下的64字节是实际数据。

现在,流的数据结构表明我们只需要43个字节来表示数据。我不确定如何在那里应用填充。实际的64字节数据似乎有一些填充-我不能只是读取数据并将其推送到结构中。我不知道如何猜测额外的填充大小。所有提取的值都应等于41 (十进制)。

代码语言:javascript
复制
<stream description="streamid_2" name="NESTED_STRUCT" type="adtf.core.media_type">
    <struct bytepos="0" name="tNestedStruct" type="tNestedStruct"/>
</stream>

<struct alignment="1" name="tNestedStruct" version="1">
    <element alignment="1" arraysize="1" byteorder="LE" bytepos="0" name="sHeaderStruct" type="tHeaderStruct"/>
    <element alignment="1" arraysize="1" byteorder="LE" bytepos="12" name="sSimpleStruct" type="tSimpleStruct"/>
</struct>

<struct alignment="1" name="tHeaderStruct" version="1">
    <element alignment="1" arraysize="1" byteorder="LE" bytepos="0" name="ui32HeaderVal" type="tUInt32"/>
    <element alignment="1" arraysize="1" byteorder="LE" bytepos="4" name="f64HeaderVal" type="tFloat64"/>
</struct>

<struct alignment="1" name="tSimpleStruct" version="1">
    <element alignment="1" arraysize="1" byteorder="LE" bytepos="0" name="ui8Val" type="tUInt8"/>
    <element alignment="1" arraysize="1" byteorder="LE" bytepos="1" name="ui16Val" type="tUInt16"/>
    <element alignment="1" arraysize="1" byteorder="LE" bytepos="3" name="ui32Val" type="tUInt32"/>
    <element alignment="1" arraysize="1" byteorder="LE" bytepos="7" name="i32Val" type="tInt32"/>
    <element alignment="1" arraysize="1" byteorder="LE" bytepos="11" name="i64Val" type="tInt64"/>
    <element alignment="1" arraysize="1" byteorder="LE" bytepos="19" name="f64Val" type="tFloat64"/>
    <element alignment="1" arraysize="1" byteorder="LE" bytepos="27" name="f32Val" type="tFloat32"/>
</struct>

下面是64个数据字节:

代码语言:javascript
复制
index = value (decimal)
0 = 3
1 = 43
2 = 0
3 = 0
4 = 0
5 = -57
6 = -120
7 = 31
8 = 0
9 = 0
10 = 0
11 = 0
12 = 0
13 = 0
14 = 0
15 = 0
16 = 0
17 = 41
18 = 0
19 = 0
20 = 0
21 = 0
22 = 0
23 = 0
24 = 0
25 = 0
26 = -128
27 = 68
28 = 64
29 = 41
30 = 41
31 = 0
32 = 41
33 = 0
34 = 0
35 = 0
36 = 41
37 = 0
38 = 0
39 = 0
40 = 41
41 = 0
42 = 0
43 = 0
44 = 0
45 = 0
46 = 0
47 = 0
48 = 0
49 = 0
50 = 0
51 = 0
52 = 0
53 = -128
54 = 68
55 = 64
56 = 0
57 = 0
58 = 36
59 = 66
60 = 0
61 = 0
62 = 0
63 = 0
EN

回答 2

Stack Overflow用户

发布于 2018-06-07 15:09:27

我真的不明白你想实现什么.首先,在DDL中不需要任何填充,bytepos遵循之前的元素大小。你必须知道,描述包含了序列化的(bytepos,byteorder)和反序列化的结构(对齐),请看一下https://support.digitalwerk.net/adtf/v2/adtf_sdk_html_docs/page_a_utils_indexedfileformat.html。要访问数据(读/写),只需通过DDL访问(https://support.digitalwerk.net/adtf/v2/adtf_sdk_html_docs/page_ddl_usage_howto.html),也可以查看示例(https://support.digitalwerk.net/adtf/v2/adtf_sdk_html_docs/page_demo_media_desc_coder.html)

票数 1
EN

Stack Overflow用户

发布于 2018-06-14 16:25:28

还有一个数据偏移量和区块标头,请看看https://support.digitalwerk.net/adtf_libraries/adtf-streaming-library/v2/DATFileFormatSpecification.pdf

但是您不必关心索引文件格式就可以在ADTF框架之外使用DDL。为此,在ADTF2.x中提供了https://support.digitalwerk.net/adtf_libraries/adtf-streaming-library/v2/api/index.html流程库

https://support.digitalwerk.net/adtf_libraries/adtf-streaming-library/v2/StreamingLibrary.pdf

在ADTF 3.x中,ADTF文件库(开源,也可以处理来自2.x的文件) https://support.digitalwerk.net/adtf_libraries/adtf-file-library/html/index.html

这两个Libs都支持读写(ADTF)DAT文件,所以我猜你需要的是什么,而不需要重新发明。

请看媒体描述示例:https://support.digitalwerk.net/adtf_libraries/adtf-streaming-library/v2/api/page_mediadescription.html

还有阅读器本身:https://support.digitalwerk.net/adtf_libraries/adtf-streaming-library/v2/api/classadtfstreaming_1_1_i_a_d_t_f_file_reader.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50510832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档