二进制协议图例生成方法、装置、电子设备及存储介质与流程

文档序号:29353291发布日期:2022-03-22 22:52阅读:87来源:国知局
1.本技术属于计算机
技术领域
:,尤其涉及一种二进制协议图例生成方法、装置、电子设备及计算机可读存储介质。
背景技术
::2.目前,一些工具(例如,markdown)允许人们使用易读易写的纯文本格式编写技术文档,并通过程序转换成格式相对丰富的xhtml(或者html)文档,在方便技术文章作者同时,还可以使得文章层次分明,条理清晰,更方便读者阅读。3.在涉及底层协议,尤其在撰写二进制协议的专业技术文档或博客时,需要详细描述二进制协议头的组成部分,一般会提供特定表格形式的协议头描述信息,以字节或者位为单位,逐字节或者逐位描述协议的每个字段的偏移位置和占用字节数。这种形式的表格简洁、直观,有助于读者快速了解和掌握协议的细节。4.现有技术中,往往通过ppt或者word文档等方式手工制作表格,以生成二进制协议图例。但这种方式操作繁琐,效率低下。技术实现要素:5.本技术实施例提供了一种二进制协议图例生成方法、装置、电子设备及计算机可读存储介质,可以解决现有通过手工生成二进制协议图例导致的操作繁琐,以及效率低下的问题。6.第一方面,本技术实施例提供一种二进制协议图例生成方法,包括:7.获取待处理二进制协议文本;8.针对待处理二进制协议文本中的每一行文本数据,基于预设文本描述规则对文本数据进行数据结构填充,得到处理后的文本数据;9.通过遍历每一行处理后的文本数据以生成html表格语句;10.基于html表格语句生成html表格,html表格为待处理二进制协议文本的html形式的二进制协议图例。11.由上可见,本技术实施例基于简单的预设文本描述规则即可快速便捷地生成html形式的二进制协议图例,相较于手工生成,其操作更简便,效率更高。12.在第一方面的一些可能的实现方式中,基于预设文本描述规则,对文本数据进行数据结构填充,得到处理后的文本数据,包括:13.若文本数据中的第一个字符为第一字符,且行尾字符为第二字符,则提取第一字符和第二字符之间的文字说明;14.若文本数据中存在第三字符,且第三字符的左侧字符为预设关键词中的一个,第三字符的右侧字符为纯数字,则提取第三字符的右侧字符;15.若文本数据中存在第四字符,且第四字符的左侧字符与正则表达式匹配,第四字符的右侧字符为预设字符中的一个,则设置字段标记位。16.在第一方面的一些可能的实现方式中,第一字符为[,第二字符为],第三字符为等号,第四字符为逗号;[0017]预设关键词包括unit、cols和width,预设字符包括*、~和+。[0018]在第一方面的一些可能的实现方式中,通过遍历每一行处理后的文本数据以生成html表格语句,包括:[0019]遍历每一行处理后的文本数据,得到每一行的遍历结果;[0020]基于每一行的遍历结果生成html表格语句;[0021]其中,遍历每一行处理后的文本数据的过程包括:[0022]若当前行的行尾标记位为真,则添加行标记;[0023]若当前字段显示的列数大于预设列数阈值,则显示当前行的数据列后,通过调用折行生成函数生成折行;[0024]若当前字段显示的列数小于或等于预设列数阈值,则显示当前行的数据列,并添加列标记;[0025]若当前字段的描述语句允许换行,则分割描述语句并插入换行标记;[0026]若当前字段结束位置除cols(表格列数)的余数为零,则设置行尾标记位为真。[0027]在第一方面的一些可能的实现方式中,在基于html表格语句以生成html表格之后,方法还包括:[0028]遍历html表格中的每一个单元格,获得每个单元格的起始坐标、宽度、高度和文本内容;[0029]遍历html表格中的每一个折行,获得每个折行的起始坐标、宽度和高度;[0030]基于遍历后的元素,使用html5canvas实例生成待处理二进制协议文本的图片形式的二进制协议图例,遍历后的元素包括单元格的起始坐标、宽度、高度和文本内容,以及折行的起始坐标、宽度和高度。[0031]在该实现方式中,还可以基于html表格快速便捷地生成图片形式的二进制协议图例,用户可以根据需要选择生成html表格还是图片,体验更高。[0032]第二方面,本技术实施例提供一种二进制协议图例生成装置,包括:[0033]文本获取模块,用于获取待处理二进制协议文本;[0034]格式化处理模块,用于针对待处理二进制协议文本中的每一行文本数据,基于预设文本描述规则对文本数据进行数据结构填充,得到处理后的文本数据;[0035]html表格语句生成模块,用于通过遍历每一行处理后的文本数据以生成html表格语句;[0036]html表格生成模块,用于基于html表格语句生成html表格,html表格为待处理二进制协议文本的html形式的二进制协议图例。[0037]在第二方面的一些可能的实现方式中,格式化处理模块用于:[0038]若文本数据中的第一个字符为第一字符,且行尾字符为第二字符,则提取第一字符和第二字符之间的文字说明;[0039]若文本数据中存在第三字符,且第三字符的左侧字符为预设关键词中的一个,第三字符的右侧字符为纯数字,则提取第三字符的右侧字符;[0040]若文本数据中存在第四字符,且第四字符的左侧字符与正则表达式匹配,第四字符的右侧字符为预设字符中的一个,则设置字段标记位。[0041]在第二方面的一些可能的实现方式中,第一字符为[,第二字符为],第三字符为等号,第四字符为逗号;[0042]预设关键词包括unit、cols和width,预设字符包括*、~和+。[0043]第三方面,本技术实施例提供一种电子设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上述第一方面任一项的方法。[0044]第四方面,本技术实施例一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如上述第一方面任一项的方法。[0045]第五方面,本技术实施例提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行上述第一方面中任一项所述的方法。[0046]可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。附图说明[0047]为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0048]图1为本技术实施例提供的二进制协议图例生成方法的一种流程示意图;[0049]图2为本技术实施例提供的折行绘制示意图;[0050]图3为本技术实施例提供的二进制协议图例生成方法的另一种流程示意框图;[0051]图4为本技术实施例提供的tcp协议报文头示意图;[0052]图5为本技术实施例提供的tcp协议报文头二进制协议图例示意图;[0053]图6为本技术实施例提供的tcp协议报文头二进制协议图例示意图;[0054]图7为本技术实施例提供的iso9660标准primarytable协议示意图;[0055]图8为本技术实施例提供的iso9660标准primarytable协议的二进制协议图例示意图[0056]图9为本技术实施例提供的二进制协议图例生成装置的结构框图;[0057]图10为本技术实施例提供的电子设备的结构示意图。具体实施方式[0058]以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本技术的描述。[0059]应当理解,当在本技术说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。[0060]还应当理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。[0061]如在本技术说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。[0062]另外,在本技术说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。[0063]在本技术说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。[0064]请参见图1,为本技术实施例提供的二进制协议图例生成方法的一种流程示意图,该方法可以包括以下步骤:[0065]步骤s101、获取待处理二进制协议文本。[0066]需要说明的是,上述待处理二进制协议文本为依据预设文本描述规则编写的二进制协议文本。该二进制协议文本完整描述了二进制协议的存储结构,包含二进制协议每个字段在存储结构中对应的偏移位置和占用字节数,每个字段描述语句占用一行。[0067]示例性地,预设文本描述规则可以包括下表1中的四个部分。[0068]表1[0069]协议头文字说明图例表格控制语句二进制协议字段描述语句行注释语句[0070]其中,协议头文字说明包括在“[]”中,例如,[tcp协议头]。“[]”里面可以包括任意字符。“[]”内部可以包括字符,但在对文本进行解析时,字符首尾的空格会被移除。例如,对于“[tcp协议头]”,其包括空格,对其解析后,移除了字符首尾的空格,那么获取到的协议头说明文字则只包含“tcp协议头”。[0071]图例表格控制语句用于控制生成的html表格的行和列等属性,采用“属性名=值”的形式,例如,cols=16表示html表格中的一行显示的列数为16列。其中,“=”两边允许空格,语句首位也允许空格,这样可以极大地方便用户录入。[0072]例如,支持的图例表格控制语句可以如下表2所示。[0073]表2[0074][0075]值得指出的是,本技术实施例定义了表格属性规则,基于所定义的表格属性规则,用户可以根据需要设置不同的表格属性,以灵活调整所生成的二进制协议图例的大小,进一步提高了生成二进制协议图例的便捷性和效率。例如,如果用户想要调整所生成的html表格的列宽,则可以通过改变width的值,以改变列宽。[0076]也就是说,用户在依据上述预设文本描述规则编写二进制协议文本时,可以通过图例表格控制语句,控制所生成的二进制协议图例的相关属性,增加了用户的灵活性。[0077]二进制协议字段描述语句一般由两个部分组成,例如:[0078]开始字节/位[-结束字节/位],[特殊标记]字节/位文字描述[0079]其中,“[]”为可选部分。[0080]特殊标记是可选的,特殊标记可以示例性如下表3所示:[0081]表3[0082]特殊标记说明*表示对应字节/位是协议保留字段~表示该列文字允许断字+表示对应字节/位为可变字段\n换行符,当字段描述文字过长时,可以换行[0083]本技术实施例提供的预设文本描述规则以行为单位,允许添加行注释语句。行注释语句可以便于开发人员对协议添加说明文字。行注释语句不会出现在生成的html表格中。[0084]在一些实施例中,本技术实施例提供的预设文本描述规则可以作为markdown现语法规则的扩展和补充。此时,用户可以依据上述预设文本描述规则,使用markdown工具进行技术文档的编写,以生成上述待处理二进制协议文本。[0085]示例性地,合法的协议头描述语句可以如下:[0086][0087]其中,表示0个或者连续多个英文空格,程序在解析的时候会自动忽略空格的存在,冗余的空格可以方便用户录入数据。[0088]在依据上述预设文本描述规则对上述协议头字段描述语句进行解析时,可以识别到“*”、“~”以及“+”等特殊标记,依据特殊标记的定义,执行对应的操作。例如,“~”表示该列文字允许断字。[0089]步骤s102、针对待处理二进制协议文本中的每一行文本数据,基于预设文本描述规则对文本数据进行数据结构填充,得到处理后的文本数据。[0090]可以理解的是,依据预设文本描述规则编写生成待处理二进制协议文本之后,在对该待处理二进制协议文本进行解析时,也基于预设文本描述规则对每一行的文本数据进行解析,得到解析后的文本数据。[0091]示例性地,基于预设文本描述规则,遍历待处理二进制协议文本的每一行。如果当前行是空行或注释行,则忽略当前行,继续遍历下一行。如果当前行不是空行和注释行,则对当前行进行文本规则解析。[0092]具体地,移除当前行的注释和首尾的空格;然后遍历当前行的各个字符。在遍历当前行的字符过程中,判断当前行的第一个字符是否为第一字符,如果当前行的第一个字符不是第一字符,则说明不是区块说明,不用提取区块说明;如果当前行的第一个字符是第一字符,则说明是区块说明文字,需要继续判断行尾字符是否为第二字符,如果行尾字符是第二字符,则提取第一字符和第二字符之间的区块说明文字。如果行尾字符不是第二字符,则进行语法报错并提示用户。[0093]在遍历当前行的字符过程中,如果判断出当前行存在第三字符,则继续判断第三字符的左侧字符是否是预设关键词中的一个;如果第三字符的左侧字符不是预设关键词中的一个,则进行语法报错并提示用户,反之,如果第三字符的左侧字符为预设关键词中的一个,则继续判断第三字符的右侧字符是否为纯数字,如果第三字符的右侧字符是纯数字,则提取第三字符的右侧字符,反之,如果第三字符的右侧字符不是纯数字,则进行语法报错并提示用户。[0094]在遍历当前行的字符过程中,如果判断出当前行存在第四字符,则说明是字段描述语句,需要继续判断第四字符的左侧字符是否匹配正则表达式,例如,正则表达式为“\d+(-\d+)”。如果第四字符的左侧字符不匹配该正则表达式,则进行语法报错并提示用户,反之,如果第四字符的左侧字符匹配该正则表达式,则继续判断第四字符的右侧字符串,如果右侧字符串中的第一个字符是预设字符中的一个,则设置该字段的字段标记位。反之,如果右侧字符串的第一个字符不是预设字符中的一个,则无需对第四字符的右侧字符进行额外的格式化处理,直接作为字段描述语句用于显示即可。[0095]值得指出的是,字段标记位用于区分哪些字段描述语句需要进行额外的格式化处理,比如,如果字段描述语句单词过长,需要折断处理,如果该字段是可变字段,需要用高亮的底纹进行显示等。[0096]在一些实施例中,第一字符为“[”,第二字符为“]”,第三字符为“=”,第四字符为“,”。上述预设关键词包括unit、cols和width,预设字符包括*、~和+。[0097]依据上述遍历过程,遍历待处理二进制协议文本的每一行,得到每一行遍历后的数据,即得到每一行处理后的文本数据。[0098]遍历后的每一行文本数据都填充了对应的数据结构,这些结构化的数据描述了每行对应的字段的详情,比如,字段描述语句所处字节范围,该字段描述语句文字是否需要折行处理,是否是可变字段等等。[0099]步骤s103、通过遍历每一行处理后的文本数据以生成html表格语句。[0100]需要说明的是,在遍历完待处理二进制协议文本的每一行之后,再遍历每一行处理后的文本数据,以生成html表格语句。其中,html表格语句是按照html语法规则拼接生成的。例如,html表格语句为“《tr》《td》列1《/td》《td》列2《/td》《/tr》”,该语句表示一行两列的表格。[0101]示例性地,遍历每一行处理后的文本数据,得到每一行的遍历结果;然后基于每一行的遍历结果拼接生成html表格语句。[0102]针对每一行处理后的文本数据均执行以下过程:[0103]判断当前行的行尾标记位是否为真,如果当前行的行尾标记位为真,则添加行标记《tr》。[0104]其中,行尾标志位是程序内部控制当字段对应的列数之和达到设定值时,需要换行。例如,每行显示16列,假设字段描述语句占用的列数分别为3,4,5,4,2,因为3+4+5+4=16,那么到第4个字段描述语句结束,就需要换行显示。[0105]判断当前字段显示的列数是否大于预设列数阈值,如果当前字段显示的列数大于预设列数阈值,则显示当前行的数据列后,通过调用折行生成函数生成折行。反之,如果当前字段显示的列数小于或等于预设列数阈值,则正常显示数据列,即显示当前行的数据列,并添加列标记《td》。其中,当前字段为当前行对应的字段。[0106]判断当前行的描述语句是否允许换行,如果允许换行,则分割描述语句并插入换行标记《br\》。其中,可以通过判断显示列标记位是否允许换行或者列描述语句是否包含换行符\n,来判断当前行的列是否允许换行。如果显示字段列标记位允许换行或者列描述语句包含换行符\n,则表明当前行的列允许换行。[0107]判断当前字段结束位置除cols(表格列数)的余数是否为零,如果为零,则设置行尾标记位为真。反之,如果不为零,说明当前行还没有显示完。例如,假设一行显示16列,如果只显示了5列,那么5%16=5余数不等于0(%是求余表达式)。[0108]依据上述遍历过程,依次对每一行处理后的文本数据进行处理,以得到每一行html语句,最后依据每一行的html语句拼接生成html表格语句。[0109]需要说明的是,如果某个字段所占用的字节数超过一行,则需要进行换行处理。而行尾标记位则是用于判断从该字段的哪个字节偏移位置开始换行,以便生出对应的html行语句代码。[0110]在遍历每一行处理后的文本数据时,处理每个字段之前,要优先判断行尾标记位是否为真。如果当前字段的行尾标记位为真,则当前字段生成的html表格语句形式如下:“《tr》《td属性=值》字段描述文字《td》”;如果当前字段的行尾标记位不为真,则当前字段生成的html表格语句形式如下:“《td属性=值》字段描述语句《/td》”。其中,《td属性=值》标记是嵌套在《tr》标记内层,浏览器在渲染html表格语句时,最先遇到的是《tr》标记,每一个《tr》标记表示新的一行开始;也可以简单认为《tr》标记渲染顺序高于《td》标记,因此程序处理过程中要优先判断行尾标记位。[0111]依据上述遍历规则,遍历每一行处理后的文本数据,以给每一行添加对应的标记,以生成每一行的html表格语句,最后基于每一行的html表格语句得到待处理二进制协议文本的html表格语句。[0112]其中,通过折行生成函数生成折行的过程可以示例性如下:获取折行在页面的起始坐标、列宽度和行高等信息,然后生成html5canvas实例,在html5canvas实例中绘制折行并移动到折行对应位置,或者调用已经绘制好的折行svg图标,通过js代码让svg图标移动到指定位置。[0113]参见图2示出的折行绘制示意图,表格行内的颜色以及表格行外的颜色均可以由用户在程序中自定义。例如,表格行内的颜色设置为黄色,表格行外的颜色设置为粉红色。其中,折行是由表格行加左右两列svg格式闪电图标通过上下叠加组合完成。用户可以在程序中自定义svg格式闪电图标两侧的颜色。[0114]步骤s104、基于html表格语句生成html表格,html表格为待处理二进制协议文本的html形式的二进制协议图例。[0115]在得到html表格语句之后,用浏览器打开html表格语句,即可看到所生成的html表格。该html表格即为表格形式的二进制协议图例。[0116]相较而言,通过ppt或者word文档制作表格的方式不同,本技术实施例可以精准快速对齐每一个字段的开始和结束位置,不需要用户手动合并单元格;同时当协议字段占用字节数较多的时候,通过折行的形式呈现,在word和ppt中要完成同样的效果是非常耗时的,需要用户反复的调整和对齐,本技术实施例提供的二进制协议图例生成方法极大的提高了用户的效率,简化了用户操作。[0117]也就是说,本技术实施例基于简单的预设文本描述规则即可快速便捷地生成html形式的二进制协议图例,相较于手工生成,其操作更简便,效率更高。[0118]在上述实施例中,基于预设文本描述规则可以快速便捷地生成html表格形式的二进制协议图例。在另一些实施例中,也可以生成图片形式的二进制协议图例。[0119]参见图3,为本技术实施例提供的二进制协议图例生成方法的另一种流程示意框图,该方法可以包括以下步骤:[0120]步骤s301、获取待处理二进制协议文本。[0121]步骤s302、针对待处理二进制协议文本中的每一行文本数据,基于预设文本描述规则对文本数据进行数据结构填充,得到处理后的文本数据。[0122]步骤s303、通过遍历每一行处理后的文本数据以生成html表格语句。[0123]步骤s304、基于html表格语句生成html表格。[0124]其中,步骤s301~s304的相关说明请参见图1对应内容,在此不再赘述。[0125]步骤s305、遍历html表格中的每一个单元格,获得每个单元格的起始坐标、宽度、高度和文本内容;遍历html表格中的每一个折行,获得每个折行的起始坐标、宽度和高度。[0126]需要说明的是,某些字段可能占用多行,因此需要用闪电一样的svg格式图标在对应字段所在行左右两侧进行标识。通过遍历折行对应的左右图标或者canvas实例,获取到其相对于页面的起始坐标,宽度、高度这些信息之后,则可以得知这些需要折行显示的字段的坐标,进而在对应位置显示闪电图标。[0127]步骤s306、基于遍历后的元素,使用html5canvas实例生成待处理二进制协议文本的图片形式的二进制协议图例。其中,遍历后的元素包括单元格的起始坐标、宽度、高度和文本内容,以及折行的起始坐标、宽度和高度。[0128]示例性地,生成html5canvas实例,然后在html5canvas实例绘制遍历后的所有元素,并通过html5canvas实例提供的api方法,在相应位置绘制同样的内容;最后,调用html5canvas实例生成图片的方法todataurl,以生成png格式的图片,该图片则为图片形式的二进制协议图例。[0129]由上可见,本技术实施例基于简单的文本描述规则,即可快速便捷地生成html表格形式的图例,或者图片形式的图例。用户可以根据需要选择生成html表格还是图片形式的图例,体验更高。[0130]为了更好地介绍本技术实施例的二进制协议图例,请参见图4~图8。其中,图4为本技术实施例提供的tcp协议报文头示意图,图5和图6均为图4对应的tcp协议报文头二进制协议图例示意图。图7为iso9660标准primarytable协议示意图,图8为iso9660标准primarytable协议的二进制协议图例示意图。[0131]在另一些实施例中,本技术实施例提供的二进制协议图例生成方案还可以用于hexdump等工具,用于制作加强版的十六进制协议分析工具。这样,用户可以将二进制协议数据按照逻辑分块进行图例说明,不需要逐个分析16进制字符,以快速清晰的知道查看数据属于二进制协议的哪个部分,大大提高二进制协议分析效率。[0132]应当理解的是,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。[0133]对应于上文实施例所述的二进制协议图例生成方法,图9示出了本技术实施例提供的二进制协议图例生成装置的结构框图,为了便于说明,仅示出了与本技术实施例相关的部分。[0134]参照图9,该装置包括:[0135]文本获取模块91,用于获取待处理二进制协议文本;[0136]格式化处理模块92,用于针对待处理二进制协议文本中的每一行文本数据,基于预设文本描述规则对文本数据进行数据结构填充,得到处理后的文本数据;[0137]html表格语句生成模块93,用于通过遍历每一行处理后的文本数据以生成html表格语句;[0138]html表格生成模块94,用于基于html表格语句生成html表格,html表格为待处理二进制协议文本的html形式的二进制协议图例。[0139]在一些可能的实现方式中,格式化处理模块用于:若文本数据中的第一个字符为第一字符,且行尾字符为第二字符,则提取第一字符和第二字符之间的文字说明;若文本数据中存在第三字符,且第三字符的左侧字符为预设关键词中的一个,第三字符的右侧字符为纯数字,则提取第三字符的右侧字符;若文本数据中存在第四字符,且第四字符的左侧字符与正则表达式匹配,第四字符的右侧字符为预设字符中的一个,则设置字段标记位。[0140]在一些可能的实现方式中,第一字符为[,第二字符为],第三字符为等号,第四字符为逗号;预设关键词包括unit、cols和width,预设字符包括*、~和+。[0141]在一些可能的实现方式中,html表格语句生成模块具体用于:遍历每一行处理后的文本数据,得到每一行的遍历结果;基于每一行的遍历结果生成html表格语句;[0142]其中,html表格语句生成模块具体用于:若当前行的行尾标记位为真,则添加行标记;若当前字段显示的列数大于预设列数阈值,则显示当前行的数据列后,通过调用折行生成函数生成折行;若当前字段显示的列数小于或等于预设列数阈值,则显示当前行的数据列,并添加列标记;若当前行的描述语句允许换行,则分割描述语句并插入换行标记;若当前字段结束位置除cols的余数为零,则设置行尾标记位为真。[0143]在一些可能的实现方式中,还包括:图片生成模块,用于遍历html表格中的每一个单元格,获得每个单元格的起始坐标、宽度、高度和文本内容;遍历html表格中的每一个折行,获得每个折行的起始坐标、宽度和高度;基于遍历后的元素,使用html5canvas实例生成待处理二进制协议文本的图片形式的二进制协议图例,遍历后的元素包括单元格的起始坐标、宽度、高度和文本内容,以及折行的起始坐标、宽度和高度。[0144]需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本技术实施例方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。[0145]图10为本技术一实施例提供的电子设备的结构示意图。如图10所示,该实施例的电子设备10包括:至少一个处理器100(图10中仅示出一个)、存储器101以及存储在所述存储器101中并可在所述至少一个处理器100上运行的计算机程序102,所述处理器100执行所述计算机程序102时实现上述任意各个目标跟踪方法实施例中的步骤。[0146]所述电子设备10可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。该电子设备可包括,但不仅限于,处理器100、存储器101。本领域技术人员可以理解,图10仅仅是电子设备10的举例,并不构成对电子设备10的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。[0147]所称处理器100可以是中央处理单元(centralprocessingunit,cpu),该处理器100还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。[0148]所述存储器101在一些实施例中可以是所述电子设备10的内部存储单元,例如电子设备10的硬盘或内存。所述存储器101在另一些实施例中也可以是所述电子设备10的外部存储设备,例如所述电子设备10上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器101还可以既包括所述电子设备10的内部存储单元也包括外部存储设备。所述存储器101用于存储操作系统、应用程序、引导装载程序(bootloader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器101还可以用于暂时地存储已经输出或者将要输出的数据。[0149]所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。[0150]本技术实施例还提供了一种电子设备,该电子设备包括:至少一个处理器、存储器以及存储在所述存储器中并可在所述至少一个处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意各个方法实施例中的步骤。[0151]本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。[0152]本技术实施例提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行时可实现上述各个方法实施例中的步骤。[0153]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质。例如u盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。[0154]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。[0155]本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。[0156]在本技术所提供的实施例中,应该理解到,所揭露的装置、电子设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/电子设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。[0157]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0158]以上所述实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1