2016-10-18 8 views
6

Я использовал побитовый оператор в php-коде, который возвращает строку декодирования в base64. Я хочу реализовать этот php-код так же, как и в javascript. По моим знаниям chr() эквивалент String.fromCharCode(n) и ord() - n.charCodeAt(0). Но оба конечных результата отличаются.Что эквивалентно функциям php chr() и ord() в javascript

PHP код: -

<?php 
$pass = "RuvEtrUt74gaDR5DufuChe"; 
$en = ""; 
foreach(str_split($pass) as $chr){ 
    $b1=((($chr = ord($chr)) >> 1) & 0xFF); 
    $b2=($chr << (8 - 1)); 
    $en = $en.chr($b1|$b2); 
} 
$en = base64_encode($en); //Output:-)º;¢:9ª:›³°")š"º3º¡4² 
echo ($en); 
echo (base64_decode($en)); //Output:- Kbo7ojo5qjqbGrOwIimaIrozuqE0sg== 

В Javascript Код: -

var pass = "RuvEtrUt74gaDR5DufuChe"; 
var en = ""; 
var passArr = pass.split(''); 
for (var i = 0; i < passArr.length; i++) { 
    var b1 = (((passArr[i] = passArr[i].charCodeAt(0)) >> 1) & 0xFF); 
    var b2 = (passArr[i] << (8 - 1)); 
    en += chr(b1 | b2); 
} 
console.log('en',en);//Output:- ⤩㪺㬻⊢㨺㤹⪪㨺ᮛᨚ㎳グ∢⤩᪚∢㪺㌳㪺↡㐴㊲ 
en = window.btoa(unescape(encodeURIComponent(en))); 
console.log('en', en);//Output:- 4qSp46q646y74oqi46i646S54qqq46i64a6b4aia446z44Kw4oii4qSp4aqa4oii46q644yz46q64oah45C044qy 
        //need same as in php i.e, :- Kbo7ojo5qjqbGrOwIimaIrozuqE0sg== 
function chr(codePt) { 
    if (codePt > 0xFFFF) { 
     codePt -= 0x10000 
     return String.fromCharCode(0xD800 + (codePt >> 10), 0xDC00 + (codePt & 0x3FF)) 
    } 
    return String.fromCharCode(codePt) 
} 

Как вы можете видеть выше выход javscript отличается от вывода PHP. Мне нужен точный вывод в javascript, который возвращается в php-коде. Благодаря

ответ

4
var res = String.fromCharCode(65); 

Эта функция работает так же, как и Chr() возвращает Charecter в JavaScript

0
function myFunction() { 
var str = "HELLO WORLD"; 
var n = str.charCodeAt(0); 
    document.getElementById("demo").innerHTML = n; 
} 

и Ord() в PHP можно использовать функцию выше