如何在javascript中从字符串中获取哈希,然后从哈希中获取字符串

如何在javascript中从字符串中获取哈希,然后从哈希中获取字符串,javascript,string,hash,hashcode,Javascript,String,Hash,Hashcode,我有一个非常长的字符串(约70000个字符),我想插入到URL中。我需要在浏览器中实现反向,因此当URL更改时,我的应用程序将做出反应并更改其状态 这是我用来从字符串生成哈希代码的函数: String.prototype.hashCode = function () { var hash = 0, i, char; if (this.length == 0) return hash; var l = this.length;

我有一个非常长的字符串(约70000个字符),我想插入到URL中。我需要在浏览器中实现反向,因此当URL更改时,我的应用程序将做出反应并更改其状态

这是我用来从字符串生成哈希代码的函数:

String.prototype.hashCode = function () {
            var hash = 0, i, char;
            if (this.length == 0) return hash;
            var l = this.length;
            for (i = 0; i < l; i++) {
                char = this.charCodeAt(i);
                hash = ((hash << 5) - hash) + char;
                hash |= 0; // Convert to 32bit integer
            }
            return hash;
        };
String.prototype.hashCode=函数(){
var hash=0,i,char;
如果(this.length==0)返回哈希;
var l=此长度;
对于(i=0;i(说这不可能)

你不能。散列是一个单向函数。560000位不能转换成32位再转换回来。

根据你的使用情况,也许你可以使用URL缩短器服务来压缩你的URL。看看这个例子:(我使用tinyurl压缩长数据URI)


直接链接到tinyurl页面:

还有其他方法压缩这么长的URL吗?你能通过POST传输数据吗?然后,查询字符串将不可见。我不想传输数据。我需要将应用程序状态存储在URL中。因此,当我按下“后退”按钮时,我的应用程序会做出反应,我还想将URL传递给第三方,这样当他们复制过去时我想你可以对字符串进行散列(包含状态的完整描述)并将相关状态保存在某种数据库中。然后,当散列被传递到URL中时,你从数据库中检索状态并用它构建页面。