私はbase64でデコード文字列を返すPHPコードでビットごとの演算子を使用しました。 JavaScriptと同じphpコードを実装したいです。私の知る限り、chr()
はString.fromCharCode(n)
と同等で、ord()
はn.charCodeAt(0)
です。ただし、両方の最終出力は異なります。
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出力とは異なります。 phpコードで返されるjavascriptの正確な出力が必要です。ありがとう
_var res = String.fromCharCode(65);
_
この関数は、chr()
関数がjavascriptで文字を返すのと同じように機能します。
function myFunction() {
var str = "HELLO WORLD";
var n = str.charCodeAt(0);
document.getElementById("demo").innerHTML = n;
}
また、ord()の場合は、JavaScriptに対して上記の関数を使用できます
このコードは、PHP ord()関数と同等のJavaScriptです。
function ord(str){return str.charCodeAt(0);}