繁体   English   中英

php bin2hex()用JavaScript解码回来

[英]php bin2hex() decode back in javascript

我在数据库中有一个网址,并将使用php函数bin2hex()对其进行编码。 我想用javascript解码回来

这两个函数给出的输出完全相同。 但是,什么功能更好,更快,更可靠? 因为它必须在所有台式机和移动设备上都能工作。

function first_HexToString(input) {
    var result = "";

    for(q = 0; q < input.length; q += 2) {
        result += '%' + input.substr(q,2);
    }

    return decodeURIComponent(result);
}

function second_HexToString(input) {
    var result = "";

    for(q = 0; q < input.length; q += 2) {
        result += String.fromCharCode(parseInt(input.substr(q,2),16));
    }

    return result;
}

Ps; 该网址不是非常秘密,将在Firebug或类似内容中显示为简单,我想到了可以对网址进行编码的想法。 ;-)

如果decodeURIComponent()的性能可忽略不计,那么这也是可能的。 哈!

function third_HexToString(input) {
  return decodeURIComponent(input.replace(/(.{1,2})/g, "%$1"));
}

在性能方面,我会选择第一个函数,因为它调用的方法更少:input.length * 3/2 + 1,而第二个函数具有input.length * 2。

计算细节:

  • 第一个函数将执行3个函数调用:两个串联,每个迭代步骤一个substr(),向其添加最终的deleteURIComponent()调用
  • 第二个函数将执行3个函数调用,再加上一个串联,因此每个迭代步骤产生4个函数调用
  • 现在我们有str.length / 2个迭代步骤,给出了上述结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM