Как переписать JavaScript код на php?

bestgs

Новичок
Как переписать JavaScript код на php?

Здравствуйте.

Есть следующий код на JavaScript:

function unfu(sMsg) {
var d = "mdngb8aser!"; /* */d+="eof132fab";d+='#aercx8763';var r = '';var rd ="mnogo78f3pcvkdejencn47e"+r;d+=rd;
var w = "78342me!2nchdzen398sdjns78";d+=w;
var k = new String(d);
while (k.length < sMsg.length/2) { k+=d; }
for (var i = 0; i< sMsg.length; i+=2 ) {
var ref = sMsg.substring(i, i+2);
var cVal = parseInt("0x" + ref);
cVal = cVal - parseInt(k.charCodeAt((i/2)));
r+= String.fromCharCode(cVal);
}
return r;
}
эту функцию надо реализовать на php. У меня получилось сделать только часть этого:

PHP:
function unfu($sMsg){
	$d = 'mdngb8aser!eof132fab#aercx8763mnogo78f3pcvkdejencn47e78342me!2nchdzen398sdjns78';
	$r = '';
	$k = $d;
	while (strlen($k) < strlen($sMsg)/2 ){
		$k .= $d;
	}
	for ($i = 0; $i < strlen($sMsg); $i += 2){
		$ref = substr($sMsg, $i, $i+2);
		
		//?????
		//?????
		//?????
		
	}
	return $r;
}

никак не могу реализовать эти 3 строчки:
var cVal = parseInt("0x" + ref);
cVal = cVal - parseInt(k.charCodeAt((i/2)));
r+= String.fromCharCode(cVal);

Пожалуйста, помогите дописать.
 

dimagolov

Новичок
1. hexdec, но надо смотреть на разрядность ref, в JS инт больше, чем 4 байта
2. ord, substr и надо смотреть что первыми символами будут - 0, 0x или цифра. соответственно octdec, hexdec, intval
3. chr
 

bestgs

Новичок
я посмотрел значения при выполнении скрипта, там получается следующее:

var ref = sMsg.substring(i, i+2); возвращает e4

var cVal = parseInt("0x" + ref); возвращает 228

cVal = cVal - parseInt(k.charCodeAt((i/2))); возвращает 119

r+= String.fromCharCode(cVal); возвращает w

можете подсказать, что делает вторая и третья строчки?

-~{}~ 24.01.10 01:31:

уфф... разобрался:)

//var ref = sMsg.substring(i, i+2);
$ref = substr($sMsg, $i, 2);

//var cVal = parseInt("0x" + ref);
$cVal = hexdec($ref);

//cVal = cVal - parseInt(k.charCodeAt((i/2)));
$cVal = $cVal - ord(substr($k,$i/2, 1));

//r+= String.fromCharCode(cVal);
$r .= chr($cVal);

благодарю за подсказку нужных функций!
 
Сверху