本发明涉及数据处理领域,更具体的说,涉及一种报文处理方法、装置、设备及存储介质。
背景技术:
1、不同系统之间通过接口进行数据交换时,通常需要使用定长报文进行交互,定长报文通常是由一串中英文数字等不同字符组成。
2、在需要将待发送报文以定长报文格式发送时,若是待发送报文的长度大于定长报文约定的长度,需要进行报文截取操作,目前在截取时,一般会默认待发送报文的字符编码为指定的几种字符编码中的一种字符编码,然后基于该字符编码的编码方式进行截取操作,若是待发送报文不为上述指定的几种字符编码中的任一种字符编码时,则会出现截取错误的情况,使得截取准确度低。
技术实现思路
1、有鉴于此,本发明公开一种报文处理方法、装置、设备及存储介质,以解决待发送报文不为上述指定的几种字符编码中的任一种字符编码时,报文截取准确度低的问题。
2、为解决上述技术问题,本发明采用了如下技术方案:
3、一种报文处理方法,包括:
4、获取待发送报文;
5、在所述待发送报文的报文长度大于预设定长报文长度的情况下,获取截取配置信息;所述截取配置信息包括截取位置标识或固定截取长度;所述截取位置标识包括参考起始位和参考结束位;
6、按照所述截取配置信息对所述待发送报文进行报文截取操作,得到待处理报文,其中,包括:若所述截取配置信息为所述截取位置标识,则对所述待发送报文从报文两端开始进行字节长度累加操作,并将累加操作得到的字节长度累加值与所述截取位置标识进行比对,以得到实际起始位和实际结束位,并按照所述实际起始位和所述实际结束位对所述待发送报文进行报文截取操作,得到待处理报文;若所述截取配置信息为所述固定截取长度,则基于所述待发送报文中的各个字符的字节长度,从所述待发送报文中确定所述固定截取长度对应的实际截取位置,并按照所述实际截取位置进行所述待发送报文的截取操作,得到待处理报文;
7、若所述待处理报文的报文长度小于所述预设定长报文长度,则对所述待处理报文进行补足操作,得到报文长度为所述预设定长报文长度的目标报文。
8、可选地,对所述待发送报文从报文两端开始进行字节长度累加操作,并将累加操作得到的字节长度累加值与所述截取位置标识进行比对,以得到实际起始位和实际结束位,包括:
9、从所述待发送报文的头部开始进行字符的字节长度累加操作,直至累加操作得到的字节长度累加值不小于所述参考起始位时停止,并将累加操作得到的字节长度累加值与所述参考起始位进行大小比对;
10、若相等,则将所述参考起始位作为实际起始位;若不相等,则将首次字节长度累加值大于所述参考起始位的字符之后的下一字符的起始位置作为实际起始位;
11、从所述待发送报文的尾部开始进行字符的字节长度累减操作,直至累减操作得到的字节长度累减值不大于所述参考结束位时停止,并将累减操作得到的字节长度累减值与所述参考结束位进行大小比对;
12、若相等,则将所述参考结束位作为实际结束位;若不相等,则将首次字节长度累减值小于所述参考结束位的字符的前一字符的结束位置作为实际结束位。
13、可选地,基于所述待发送报文中的各个字符的字节长度,从所述待发送报文中确定所述固定截取长度对应的实际截取位置,包括:
14、获取所述待发送报文中的各个字符的字节长度,并将各个所述字符的字节长度按顺序组成字节数组;
15、按顺序统计所述字节数组内连续重复的字节长度的个数,将所述字节长度和所述字节长度对应的重复个数作为统计列表中的一个数组;
16、从所述统计列表中的每一个数组开始,计算数组累加长度,直至所述数组累加长度不小于所述固定截取长度时停止;所述数组累加长度为数组长度的累计值;所述数组长度为所述统计列表中的数组中包括的字节长度和所述字节长度对应的重复个数之积;
17、若所述数组累加长度等于所述固定截取长度,则根据所述数组累加长度对应的始末数组位置,确定所述待发送报文的实际截取位置;
18、若所述数组累加长度大于所述固定截取长度,则确定待选列表;所述待选列表包括待处理数组,所述待处理数组包括数组累计时所使用的起始数组、所述数组累加长度之前的上一数组累加长度、以及所述上一数组累加长度对应的结束数组;
19、基于所述待选列表,从所述待发送报文中确定所述固定截取长度对应的实际截取位置。
20、可选地,基于所述待选列表,从所述待发送报文中确定所述固定截取长度对应的实际截取位置,包括:
21、按照所述待处理数组中的所述上一数组累加长度,对所述待选列表中的所述待处理数组进行排序操作,得到更新后的待选列表;
22、按照所述更新后的待选列表中的所述待处理数组的排列顺序,依次将所述待处理数组作为目标数组;
23、计算所述目标数组中的所述上一数组累加长度与所述固定截取长度的长度差值;
24、基于所述长度差值、所述统计列表中位于所述起始数组之前的上一数组、以及位于所述结束数组之后的下一数组,确定实际截取位置。
25、可选地,基于所述长度差值、所述统计列表中位于所述起始数组之前的上一数组、以及位于所述结束数组之后的下一数组,确定实际截取位置,包括:
26、确定所述长度差值与位于所述起始数组之前的上一数组中的字节长度的第一大小关系,以及所述长度差值与位于所述结束数组之后的下一数组中的字节长度的第二大小关系;
27、根据所述第一大小关系以及所述第二大小关系,计算实际截取位置。
28、可选地,根据所述第一大小关系以及所述第二大小关系,计算实际截取位置,包括:
29、在所述第一大小关系为不大于或所述第二大小关系为不大于的情况下,根据所述统计列表中的所述结束数组以及位于所述结束数组之前的数组,计算实际截取位置;
30、在所述第一大小关系为小于、且所述第二大小关系为大于的情况下,计算所述长度差值与位于所述结束数组之后的下一数组中的字节长度的第一比值,并基于所述第一比值、所述统计列表中的所述结束数组以及位于所述结束数组之前的数组,确定实际截取位置;
31、在所述第一大小关系为大于的情况下,计算所述长度差值与位于所述起始数组之前的上一数组中的字节长度的第二比值,并基于所述第二比值、所述统计列表中的所述结束数组以及位于所述结束数组之前的数组,确定实际截取位置。
32、可选地,对所述截取报文进行补足操作,包括:
33、确定补位字符;
34、计算所述待处理报文的报文长度与所述预设定长报文长度的差值;
35、基于所述补位字符的字节长度,确定所述差值对应的补位字符的数量;
36、使用所述数量的所述补位字符对所述待处理报文进行补足操作。
37、一种报文处理装置,包括:
38、报文获取模块,用于获取待发送报文;
39、配置信息获取模块,用于在所述待发送报文的报文长度大于预设定长报文长度的情况下,获取截取配置信息;所述截取配置信息包括截取位置标识或固定截取长度;所述截取位置标识包括参考起始位和参考结束位;
40、报文截取模块,用于按照所述截取配置信息对所述待发送报文进行报文截取操作,得到待处理报文,其中,包括:若所述截取配置信息为所述截取位置标识,则对所述待发送报文从报文两端开始进行字节长度累加操作,并将累加操作得到的字节长度累加值与所述截取位置标识进行比对,以得到实际起始位和实际结束位,并按照所述实际起始位和所述实际结束位对所述待发送报文进行报文截取操作,得到待处理报文;若所述截取配置信息为所述固定截取长度,则基于所述待发送报文中的各个字符的字节长度,从所述待发送报文中确定所述固定截取长度对应的实际截取位置,并按照所述实际截取位置进行所述待发送报文的截取操作,得到待处理报文;
41、报文输出模块,用于若所述待处理报文的报文长度小于所述预设定长报文长度,则对所述待处理报文进行补足操作,得到报文长度为所述预设定长报文长度的目标报文。
42、一种电子设备,所述电子设备包括存储器和处理器;
43、所述存储器用于存储至少一个指令;
44、所述处理器用于执行所述至少一个指令以实现上述的报文处理方法。
45、一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储至少一个指令,所述至少一个指令被处理器执行时实现上述的报文处理方法。
46、相较于现有技术,本发明具有以下有益效果:
47、从上述的技术方案可知,本发明提供了一种报文处理方法、装置、设备及存储介质,本发明中,在进行报文截取时,不再依据字符编码方式,而是基于字节长度进行报文截取操作,字节长度不受字符编码的影响,则基于字节长度进行报文截取时,能够避免由于字符编码方式的不同对报文截取的影响,提高报文截取的准确度。另外,本发明中,在基于字节长度进行报文截取时,若是截取出的待处理报文的报文长度不足,则对其进行补足操作,以得到报文长度为所述预设定长报文长度的目标报文,满足定长报文的要求。并且,本发明中支持固定截取长度以及截取位置标识这两种报文截取方式,能够适应不同场景下的报文截取需求,提高用户体验。