【问题标题】:php bin2hex() decode back in javascriptphp bin2hex() 在javascript中解码
【发布时间】:2015-07-30 14:01:15
【问题描述】:

我在数据库中有一个 url,将使用 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; url 不是很秘密,将在 Firebug 或类似的东西中简单显示,我认为可以对 url 进行编码。 ;-)

【问题讨论】:

    标签: javascript php hex ascii


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      计算细节:

      • 第一个函数将执行 3 个函数调用:两个连接,每个迭代步骤一个 substr(),我们将最终的 decodeURIComponent() 调用添加到其中
      • 第二个函数将执行 3 次函数调用,外加 1 次串联,每个迭代步骤产生 4 次函数调用
      • 现在我们有 str.length/2 迭代步骤,它给出了上述结果

      【讨论】:

      • 你如何看待 decodeURIComponent 的复杂性?
      • decodeURIComponent() 的性能可以忽略不计,并且可能包含与函数 #2 类似的算法,只是本机实现,它可以受益于预先分配的字符串和更快的函数调用,与来自功能 #2 的 3 个嵌入的
      猜你喜欢
      • 1970-01-01
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      • 2011-09-26
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 2011-11-19
      相关资源
      最近更新 更多