网址转换方法及装置与流程

文档序号:18939929发布日期:2019-10-23 01:04阅读:273来源:国知局
网址转换方法及装置与流程

本发明涉及互联网技术领域,尤其涉及一种网址转换方法及装置。



背景技术:

短网址是指在形式上比较短的网址,通常是根据原来冗长的长网址计算获得,并用来替换原来的长网址,从而方便使用者进行网址分享。

然而,采用现有的方法获得短网址时,短网址的长度不固定,短网址的长度会随着长网址中所加入的数值序列的增加而变长,长度不固定,而且,获得的短网址有序,存在不安全的风险;以及,获得的不同短网址之间重复的可能性也较高。



技术实现要素:

本发明实施例提供网址转换方法及装置。所述技术方案如下:

根据本发明实施例的第一方面,提供一种网址转换方法,包括:对长网址做哈希运算,获得h位散列值,h为大于或等于32的整数;以预设顺序,每次从所述散列值中选取m位码,共取n次,其中,与第n次选取的m位码相比,第n+1次选取的m位码中至少有一位码未包含在前n次选取的m位码中,n为大于或等于1的整数,m为大于或等于6的整数,n为大于或等于8的整数;将每次选取的m位码转换为0~2m的数值范围中的相应数值;从预设字符组中获取与所述相应数值对应的一个字符,其中,所述预设字符组至少包括2m+1个不同字符,且每个字符与所述0~2m的数值范围中的一个数值相对应;将由获取的n个字符所组成的字符串,作为所述长网址转换后的短网址输出。

优选地,所述h位的散列值表示包括h/8个元素的字节数组,所述方法还包括:从所述字节数组中选取y个元素,y为大于或等于4的整数;将所选取的y个元素进行进制数转换,获得十六进制的字符串;将所述十六进制的字符串进行翻转处理,获得翻转后的字符串;将所述翻转后的字符串初始化为x位的大整数,x为大于或等于32的整数;所述以预设顺序,每次从所述散列值中选取m位码,共取n次,包括:以预设顺序,每次从所述x位的大整数中选取m位码,共取n次。

优选地,当h大于或等于64时,所述以预设顺序,每次从所述散列值中选取m位码,共取n次,其中,与第n次选取的m位码相比,第n+1次选取的m位码中至少有一位码未包含在前n次选取的m位码中,包括:从所述散列值的低位或高位开始,每次连续取m位码,共取n次,其中,第n次选取的m位码的末位,与第n+1次选取的m位码的初始位相邻。

优选地,所述预设字符数组至少由以下字符组成:“a”~“z”、“a”~“z”、“0”~“9”、“=”、“-”。

优选地,采用md5、md4、sha和crc-32中的任一种哈希函数,对所述长网址进行哈希运算。

根据本发明实施例的第二方面,提供一种网址转换装置,包括:处理模块,用于对长网址做哈希运算,获得h位散列值,h大于或等于32;第一选取模块,用于以预设顺序,每次从所述散列值中选取m位码,共取n次,其中,与第n次选取的m位码相比,第n+1次选取的m位码中至少有一位码未包含在前n次选取的m位码中,n为大于或等于1的整数,m为大于或等于6的整数,n为大于或等于8的整数;第一转换模块,用于将每次选取的m位码转换为0~2m的数值范围中的相应数值;获取模块,用于从预设字符组中获取与所述相应数值对应的一个字符,其中,所述预设字符组至少包括2m+1个不同字符,且每个字符与所述0~2m的数值范围中的一个数值相对应;输出模块,用于将由获取的n个字符所组成的字符串,作为所述长网址转换后的短网址输出。

优选地,所述h位的散列值表示包括h/8个元素的字节数组,所述装置还包括:第二选取模块,用于从所述字节数组中选取y个元素,y为大于或等于4的整数;第二转换模块,用于将所选取的y个元素进行进制数转换,获得十六进制的字符串;翻转模块,用于将所述十六进制的字符串进行翻转处理,获得翻转后的字符串;第三转换模块,用于将所述翻转后的字符串初始化为x位的大整数,x为大于或等于32的整数;所述第一选取模块还包括第一选取子模块,用于以预设顺序,每次从所述x位的大整数中选取m位码,共取n次。

优选地,当h大于或等于64时,所述第一选取模块还包括:第二选取子模块,用于从所述散列值的低位或高位开始,每次连续取m位码,共取n次,其中,第n次选取的m位码的末位,与第n+1次选取的m位码的初始位相邻。

优选地,所述预设字符数组至少由以下字符组成:“a”~“z”、“a”~“z”、“0”~“9”、“=”、“-”。

根据本发明实施例的第三方面,提供一种网址转换装置,包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器被配置为执行上述第一方面提供的网址转换方法。

本发明的实施例提供的技术方案可以包括以下有益效果:通过对长网址做哈希运算,获得h位散列值,h为大于或等于32的整数;以预设顺序,每次从所述散列值中选取m位码,共取n次,其中,与第n次选取的m位码相比,第n+1次选取的m位码中至少有一位码未包含在前n次选取的m位码中,n为大于或等于1的整数,m为大于或等于6的整数,n为大于或等于8的整数;将每次选取的m位码转化为0~2m的数值范围中的相应数值;从预设字符组中获取与所述相应数值对应的一个字符,其中,所述预设字符组至少包括2m+1个不同字符,且每个字符与所述0~2m的数值范围中的一个数值相对应;将由获取的n个字符所组成的字符串,作为所述长网址转换后的短网址;可以使短网址的长度固定且无序,降低安全风险;可以获得至少648(281万亿)种组合的短网址,大大降低短网址之间的碰撞率;以及,还可以保证相同的长网址都能映射到同一个短网址中,对于内部使用场景来说,既可以实现资源复用,还能节省资源存储空间。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。

图1是根据一示例性实施例示出的网址转换方法的流程图。

图2是根据一示例性实施例示出的网址转换方法的流程图。

图3是根据一示例性实施例示出的网址转换方法的流程图。

图4是根据一示例性实施例示出的网址转换装置的框图。

图5是根据一示例性实施例示出的网址转换装置的框图。

图6是根据一示例性实施例示出的网址转换装置的框图。

图7是根据一示例性实施例示出的网址转换装置的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

图1是根据一示例性实施例示出的一种网址转换方法的流程图,如图1所示,该网址转换方法包括以下步骤101-105:

在步骤101中,对长网址做哈希运算,获得h位散列值,h为大于或等于32的整数。

这里,长网址为字符串类型的长网址。示例的,可以采用md5、md4、sha、crc-32中的任一种哈希函数对长网址进行哈希处理,以获得至少包括32bit的散列值。

在步骤102中,以预设顺序,每次从所述散列值中选取m位码,共取n次,其中,与第n次选取的m位码相比,第n+1次选取的m位码中至少有一位码未包含在前n次选取的m位码中,n为大于或等于1的整数,m为大于或等于6的整数,n为大于或等于8的整数。

示例的,可以在获得至少32bit的散列值后,根据bit位的顺序,每次按位获取6位码,共取8次,并且,后一次获得的6位码中至少有一位码是之前从未被获取过的。例如,以后一次获得的6位码中有2位码之前从未被获取过为例进行说明,当散列值为“001110101110…101011100001”时,可以从高位开始,第一次取“001110”,然后右移两位,第二次取“111010”,之后继续右移两位,第三次取“101011”,直至取8次。这里,当h为32bit时,后一次获得的6位码中,最少可以有1位码之前从未被取过,最多可以有3位码之前从未被取过;当后一次获得的6位码中有1位码之前从未被取过时,最多可取27次;当后一次获得的6位码中有3位码之前从未被取过时,最多可取9次。

在步骤103中,将每次选取的m位码转化为0~2m的数值范围中的相应数值。

示例的,可以在每选出m位码之后,将该m位码转换为十进制数,例如,当取出的m位码为“001110”时,可将其转换为十进制数“14”,并将该数值作为字符获取时的索引值。

在步骤104中,从预设字符组中获取与所述相应数值对应的一个字符,其中,所述预设字符组至少包括2m+1个不同字符,且每个字符与所述0~2m的数值范围中的一个数值相对应。

这里,由于每m位码会被转换为0~2m的数值范围内的数字,为了减少短网址的碰撞率,需要使0~2m的数字范围内的每一个数值所对应的字符不同,所以,该预设字符组至少包括2m+1个不同的字符。示例的,所述预设字符数组至少由以下字符组成:“a”~“z”、“a”~“z”、“0”~“9”、“=”、“-”。

在步骤105中,将由获取的n个字符所组成的字符串,作为所述长网址转换后的短网址输出。

示例的,当依次获得的字符串为“c”、“9”、“2”、“g”、“=”、“4”、“j”和“e”时,则输出的短网址则为“c92g=4je”。

这里,上述步骤101-105所述的网址转换方法可适用于c、c++等可以进行位操作的语言环境中。

本实施例中,通过采用哈希函数对长网址进行处理,获得h位散列值,h为大于或等于32的整数;以预设顺序,每次从所述散列值中选取m位码,共取n次,其中,与第n次选取的m位码相比,第n+1次选取的m位码中至少有一位码未包含在前n次选取的m位码中,n为大于或等于1的整数,m为大于或等于6的整数,n为大于或等于8的整数;将每次选取的m位码转化为0~2m的数值范围中的相应数值;从预设字符组中获取与所述相应数值对应的一个字符,其中,所述预设字符组至少包括2m+1个不同字符,且每个字符与所述0~2m的数值范围中的一个数值相对应;将由获取的n个字符所组成的字符串,作为所述长网址转换后的短网址;可以使短网址的长度固定且无序,降低安全风险;可以获得至少648(281万亿)种组合的短网址,大大降低短网址之间的碰撞率;以及,还可以保证相同的长网址都可以映射到同一个短网址中,对于内部使用场景来说,既可以实现资源复用,还能节省资源存储空间。

图2是根据一示例性实施例示出的一种网址转换方法的流程图,如图2所示,上述网址转换方法还包括步骤202-205,步骤102可以被执行为206:

在步骤201中,对长网址做哈希运算,获得h位散列值,h为大于或等于32的整数,所述h位的散列值表示包括h/8个元素的字节数组。

示例的,当散列值为32位时,则表示包含4个元素的字节数组;当散列值为64位时,则表示包含8个元素的字节数组。这里,一个元素表示字节数组中的一个字节。

在步骤202中,从所述字节数组中选取y个元素,y为大于或等于4的整数。

在步骤203中,将所选取的y个元素进行进制数转换,获得十六进制的字符串。

示例的,当从字节数组中选取4个元素时,可以将该4个元素所对应的32位码中的每4位码转换为一个十六进制的字符,最终,获得包括8个字符的十六进制字符串。

在步骤204中,将所述十六进制的字符串进行翻转处理,获得翻转后的字符串。

这里,可以采用任何字符串翻转的方法进行翻转处理,例如,可以采用翻转函数reserse()进行翻转。

在步骤205中,将所述翻转后的字符串初始化为x位的大整数,x为大于或等于32的整数。

这里,将翻转后的字符串初始化为biginteger。这里,由于该十六进制的字符串至少为32位,所以,转换后可获得至少为32位的大整数。

这里,由于c++语言环境通常采用小端模式进行数据存储,java语言通常采用大端模式,通过将从字节数组中选取的元素转换为十六进制字符串,以及将该十六进制字符串初始化为大整数,可以将以大端模式存储的数据转换为以小端模式存储的数据,从而使数据类型一致。

在步骤206中,以预设顺序,每次从所述x位的大整数中选取m位码,共取n次,其中,与第n次选取的m位码相比,第n+1次选取的m位码中至少有一位码未包含在前n次选取的m位码中,n为大于或等于1的整数,m为大于或等于6的整数,n为大于或等于8的整数。

在步骤207中,将每次选取的m位码转换为0~2m的数值范围中的相应数值。

在步骤208中,从预设字符组中获取与所述相应数值对应的一个字符,其中,所述预设字符组至少包括2m+1个不同字符,且每个字符与所述0~2m的数值范围中的一个数值相对应。

在步骤209中,将由获取的n个字符所组成的字符串,作为所述长网址转换后的短网址输出。

本实施例中,通过对长网址做哈希运算,获得h位散列值,h为大于或等于32的整数,所述h位的散列值表示包括h/8个元素的字节数组;从所述字节数组中选取y个元素,y为大于或等于4的整数;将所选取的y个元素进行进制数转换,获得十六进制的字符串;将所述十六进制的字符串进行翻转处理,获得翻转后的字符串;将所述翻转后的字符串初始化为x位的大整数,x为大于或等于32的整数;以预设顺序,每次从所述x位的大整数中选取m位码,共取n次,其中,与第n次选取的m位码相比,第n+1次选取的m位码中至少有一位码未包含在前n次选取的m位码中,n为大于或等于1的整数,m为大于或等于6的整数,n为大于或等于8的整数;将每次选取的m位码转换为0~2m的数值范围中的相应数值;从预设字符组中获取与所述相应数值对应的一个字符,其中,所述预设字符组至少包括2m+1个不同字符,且每个字符与所述0~2m的数值范围中的一个数值相对应;将由获取的n个字符所组成的字符串,作为所述长网址转换后的短网址输出;可以在java环境中实现长度固定且无序、碰撞率低的短网址的转换;还可以保证相同的长网址都可以映射到同一个短网址中,对于内部使用场景来说,既可以实现资源复用,还能节省资源存储空间。

图3是根据一示例性实施例示出的一种网址转换方法的流程图,如图3所示,步骤102还可以被执行为302:

在步骤301中,对长网址做哈希运算,获得h位散列值,h大于或等于64。

在步骤302中,从所述散列值的低位或高位开始,每次连续取m位码,共取n次,其中,第n次选取的m位码的末位,与第n+1次选取的m位码的初始位相邻,n为大于或等于1的整数,m为大于或等于6的整数,n为大于或等于8的整数。

这里,由于h大于或等于64,所以,当只取8次时,可以使后一次获得的6位码均是之前从未被取过的码。示例的,当h为64时,可以从散列值的高位开始,按照bit位的顺序,先取高6位,之后,右移6位,取该右移的6位;例如,当散列值为“001110101110…101011100001”时,先取“001110”,再取“101110”。这里,当每次选取的m位码为之前从未被选取过的码时,可以使由选取的m位码转换所得到的数值更分散,进而使获得的不同字符之间的分散率更高,从而使获得的短网址更安全。

在步骤303中,将每次选取的m位码转化为0~2m的数值范围中的相应数值。

在步骤304中,从预设字符组中获取与所述相应数值对应的一个字符,其中,所述预设字符组至少包括2m+1个不同字符,且每个字符与所述0~2m的数值范围中的一个数值相对应。

在步骤305中,将由获取的n个字符所组成的字符串,作为所述长网址转换后的短网址输出。

本实施例中,通过对长网址做哈希运算,获得h位散列值,h大于或等于64;从所述散列值的低位或高位开始,每次连续取m位码,共取n次,其中,第n次选取的m位码的末位,与第n+1次选取的m位码的初始位相邻,n为大于或等于1的整数,m为大于或等于6的整数,n为大于或等于8的整数;将每次选取的m位码转换为0~2m的数值范围中的相应数值;从预设字符组中获取与所述相应数值对应的一个字符,其中,所述预设字符组至少包括2m+1个不同字符,且每个字符与所述0~2m的数值范围中的一个数值相对应;将由获取的n个字符所组成的字符串,作为所述长网址转换后的短网址输出;可以实现长度固定、无序、安全、且碰撞率低的短网址的转换;还可以保证相同的长网址都可以映射到同一个短网址中,对于内部使用场景来说,既可以实现资源复用,还能节省资源存储空间。

在另一实施例中,上述步骤206也可以被执行为上述步骤302。

图4是根据一示例性实施例示出的一种网址转换装置的框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图4所示,该网址转换装置包括:

处理模块401,用于对长网址做哈希运算,获得h位散列值,h为大于或等于32的整数;第一选取模块402,用于以预设顺序,每次从所述散列值中选取m位码,共取n次,其中,与第n次选取的m位码相比,第n+1次选取的m位码中至少有一位码未包含在前n次选取的m位码中,n为大于或等于1的整数,m为大于或等于6的整数,n为大于或等于8的整数;第一转换模块403,用于将每次选取的m位码转换为0~2m的数值范围中的相应数值;获取模块404,用于从预设字符组中获取与所述相应数值对应的一个字符,其中,所述预设字符组至少包括2m+1个不同字符,且每个字符与所述0~2m的数值范围中的一个数值相对应;输出模块405,用于将由获取的n个字符所组成的字符串,作为所述长网址转换后的短网址输出。

作为一种可能的实施例,图5是根据一示例性实施例示出的一种网址转换装置的框图。如图5所示,所述网址转换装置还可以被配置成包括第二选取模块406、第二转换模块407、翻转模块408和第三转换模块409;以及,第一选取模块402还可以被配置为包括第一选取子模块4021;所述h位的散列值表示包括h/8个元素的字节数组,其中:

第二选取模块406,用于从所述字节数组中选取y个元素,y为大于或等于4的整数;第二转换模块407,用于将所选取的y个元素进行进制数转换,获得十六进制的字符串;翻转模块408,用于将所述十六进制的字符串进行翻转处理,获得翻转后的字符串;第三转换模块409,用于将所述翻转后的字符串初始化为x位的大整数,x为大于或等于32的整数;以及,第一选取子模块4021,用于以预设顺序,每次从所述x位的大整数中选取m位码,共取n次,其中,与第n次选取的m位码相比,第n+1次选取的m位码中至少有一位码未包含在前n次选取的m位码中,n为大于或等于1的整数,m为大于或等于6的整数,n为大于或等于8的整数。

作为一种可能的实施例,图6是根据一示例性实施例示出的一种网址转换装置的框图。如图6所示,所述第一选取模块402还可以被配置成包括第二选取子模块4022,用于当h大于或等于64时,从所述散列值的低位或高位开始,每次连续取m位码,共取n次,其中,第n次选取的m位码的末位,与第n+1次选取的m位码的初始位相邻。

关于上述实施例中的装置,其中多个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

下述为本发明提供的装置实施例,可以用于执行本发明中上述方法实施例。

图7是根据一示例性实施例示出的一种网址转换装置的框图,该装置适用于终端设备。例如,装置700可以是计算机设备。

装置700可以包括以下一个或多个组件:处理组件702,存储器704,电源组件706,多媒体组件708,音频组件710,输入/输出(i/o)的接口712,传感器组件714,以及通信组件716。

处理组件702通常控制装置700的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件702可以包括一个或多个处理器720来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件702可以包括一个或多个模块,便于处理组件702和其他组件之间的交互。例如,处理组件702可以包括多媒体模块,以方便多媒体组件708和处理组件702之间的交互。

存储器704被配置为存储各种类型的数据以支持在装置700的操作。这些数据的示例包括用于在装置700上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器704可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

电源组件706为装置700的各种组件提供电力。电源组件706可以包括电源管理装置,一个或多个电源,及其他与为装置700生成、管理和分配电力相关联的组件。

多媒体组件708包括在所述装置700和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件708包括一个前置摄像头和/或后置摄像头。当装置700处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜装置或具有焦距和光学变焦能力。

音频组件710被配置为输出和/或输入音频信号。例如,音频组件710包括一个麦克风(mic),当装置700处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器704或经由通信组件716发送。在一些实施例中,音频组件710还包括一个扬声器,用于输出音频信号。

i/o接口712为处理组件702和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。

传感器组件714包括一个或多个传感器,用于为装置700提供多个方面的状态评估。例如,传感器组件714可以检测到装置700的打开/关闭状态,组件的相对定位,例如所述组件为装置700的显示器和小键盘,传感器组件714还可以检测装置700或装置700一个组件的位置改变,用户与装置700接触的存在或不存在,装置700方位或加速/减速和装置700的温度变化。传感器组件714可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件714还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件714还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。

通信组件716被配置为便于装置700和其他设备之间有线或无线方式的通信。装置700可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件716经由广播信道接收来自外部广播管理装置的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件716还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

在示例性实施例中,装置700可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器704,上述指令可由装置700的处理器720执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

本实施例提供了一种计算机可读存储介质,当所述存储介质中的指令由装置700的处理器执行时实现以下步骤:

对长网址做哈希处理,获得h位散列值,h为大于或等于32的整数;以预设顺序,每次从所述散列值中选取m位码,共取n次,其中,与第n次选取的m位码相比,第n+1次选取的m位码中至少有一位码未包含在前n次选取的m位码中,n为大于或等于1的整数,m为大于或等于6的整数,n为大于或等于8的整数;将每次选取的m位码转换为0~2m的数值范围中的相应数值;从预设字符组中获取与所述相应数值对应的一个字符,其中,所述预设字符组至少包括2m+1个不同字符,且每个字符与所述0~2m的数值范围中的一个数值相对应;将由获取的n个字符所组成的字符串,作为所述长网址转换后的短网址输出。

所述h位的散列值表示包括h/8个元素的字节数组,所述存储介质中的指令被处理器执行时还可以实现以下步骤:从所述字节数组中选取y个元素,y为大于或等于4的整数;将所选取的y个元素进行进制数转换,获得十六进制的字符串;将所述十六进制的字符串进行翻转处理,获得翻转后的字符串;将所述翻转后的字符串初始化为x位的大整数,x为大于或等于32的整数;所述以预设顺序,每次从所述散列值中选取m位码,共取n次,包括:以预设顺序,每次从所述x位的大整数中选取m位码,共取n次。

所述存储介质中的指令被处理器执行时还可以实现以下步骤:从所述散列值的低位或高位开始,每次连续取m位码,共取n次,其中,第n次选取的m位码的末位,与第n+1次选取的m位码的初始位相邻。

所述存储介质中的指令被处理器执行时还可以实现以下步骤:对所述字节数组进行存储模式转换,获得以预设模式存储的字节数组;所述选取所述字节数组中的y个元素,包括:从所述以预设模式存储的字节数组中选取y个元素。

本实施例还提供了一种网址转换装置,包括:处理器;用于存储处理器可执行指令的存储器;处理器被配置为:

对长网址做哈希运算,获得h位散列值,h为大于或等于32的整数;以预设顺序,每次从所述散列值中选取m位码,共取n次,其中,与第n次选取的m位码相比,第n+1次选取的m位码中至少有一位码未包含在前n次选取的m位码中,n为大于或等于1的整数,m为大于或等于6的整数,n为大于或等于8的整数;将每次选取的m位码转换为0~2m的数值范围中的相应数值;从预设字符组中获取与所述相应数值对应的一个字符,其中,所述预设字符组至少包括2m+1个不同字符,且每个字符与所述0~2m的数值范围中的一个数值相对应;将由获取的n个字符所组成的字符串,作为所述长网址转换后的短网址输出。

在一个实施例中,所述h位的散列值表示包括h/8个元素的字节数组,处理器还可以被配置为:从所述字节数组中选取y个元素,y为大于或等于4的整数;将所选取的y个元素进行进制数转换,获得十六进制的字符串;将所述十六进制的字符串进行翻转处理,获得翻转后的字符串;将所述翻转后的字符串初始化为x位的大整数,x为大于或等于32的整数;所述以预设顺序,每次从所述散列值中选取m位码,共取n次,包括:以预设顺序,每次从所述x位的大整数中选取m位码,共取n次。

在一个实施例中,处理器还可以被配置为:当h大于或等于64时,从所述散列值的低位或高位开始,每次连续取m位码,共取n次,其中,第n次选取的m位码的末位,与第n+1次选取的m位码的初始位相邻。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1