日期:2014-05-20  浏览次数:20723 次

有份源码想请教各位,能帮我看看吗?
我分析一个网站的js代码时碰到下面这些
function     byteToHexString(   b)   {
              var     hexDigits   =   new   Array(   "0 ",   "1 ",   "2 ",   "3 ",   "4 ",   "5 ",   "6 ",
                                                                          "7 ",
                                                                      "8 ",   "9 ",   "a ",   "b ",   "c ",   "d ",   "e ",
                                                                      "f "   );
                var   n   =   parseInt(b);
                if   (n   <   0)   {
                        n   =   256   +   n;
                }

                var   d1   =     parseInt(n     /   16)   ;
                var   d2   =   n   %   16;
                return   hexDigits[d1]   +   hexDigits[d2];
        }

function     xor(origin,     key   )   {
                var   result   =   " ";
                key   =   parseInt(   key   );
                for(   var   i=0;   i <origin.length   ;   i++){
                      var   x   =     parseInt(     String(   origin.charCodeAt(i))   );
                      result   +=     byteToHexString(     x   ^   key)   ;
                }
                return   result;
        }

调用时:
a=xor( "78e0d4f883e88219 ",100);
结果a的值是个64位的字符串,那个   x^key   看不懂,key传进去的是100,那不是x的100次方吗,那byteToHexString里的parseInt不会报错吗,最后的结果是怎么得出来的,我不太懂java,只是想把这两个函数用delphi写出来,麻烦大家帮帮忙看看~~

------解决方案--------------------
不知道
------解决方案--------------------
这个不是 Java,是 JavaScript!“^”不是次方,是按二进制的位进行异或运算。
------解决方案--------------------
你要查一下JS里^的作用啦