function bin2hex(s){ // Convert binary data into hexadecimal representation
//
// + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
var i, f = s.length, a = [];
for(i = 0; i<f; i++){
a[i] = s.charCodeAt(i).toString(16);
}
return a.join('');
}
Взял с помощью здешнего file_get_contents() бинарник изображения.
Привёл к хексу данной функцией.
Сравнил с результатом, полученным в php.
Javascript выдал отличающийся результат (неверный).
Это недоработка данной функции, или жабаскрипт категорически не приемлет бинарные данные (не интерпретирующиеся как символы)?
Для символов с кодами 0—15
s.charCodeAt(i).toString(16) даст одну шестнадцеричную цифру, а не две.
Насчет следуюшего не уверен, но тоже может давать ошибки:
В js все строки считаются в utf-8. Произвольные бинарные данные не являются utf-8 совместимыми.
Я бы предложил такой вариант замены PHP функции bin2hex, а так же аналогичных в других языках: hex2bin(), hex2dec(), dec2hex, oct2dec() и так далее и тому подобное:
Зачем столько ветвлений? Можно сразу универсальную сделать.
bin2hex = function(bin){// UTF-8 char -> ASCII hex
var hex = '';
for(var i = 0; i0xFF) c -= 0x350; // UTF-8 -> ASCII
hex += c.toString(16);
}
return hex;
}
hex2bin = function(hex) {// ASCII hex-> UTF-8 char
var bin = '';
for (var i=0; i0x7F) c += 0x350; // ASCII -> UTF-8
bin += String.fromCharCode(c);
}
return bin;
}
// hex2bin('2ff1ebe5f8') -> '/слеш'
// hex2bin('/слеш') -> '2ff1ebe5f8'
bin2hex = function(bin){ // UTF-8 string -> ASCII hex
var hex = '';
for(var i = 0; i0xFF) c -= 0x350; // UTF-8 -> ASCII
hex += c.toString(16);
}
return hex;
}
hex2bin = function(hex) { // ASCII hex-> UTF-8 string
var bin = '';
for (var i=0; i0x7F) c += 0x350; // ASCII -> UTF-8
bin += String.fromCharCode(c);
}
return bin;
}
alert( hex2bin('2ff1ebe5f8') ) // '/слеш'
alert( hex2bin('/слеш') ) // '2ff1ebe5f8'
Доброе время, подскажите что выполняет эта функция.
function y(a,b){
return parseInt(a,b||10)
}
возвращает целочисленное значение переменной a в системе счисления b. Если аргумент b не передан, то за систему счисления выбирается десятичная. Функция бесполезна, так как является просто оберткой вокруг parseInt
Не работает!!!
bin2hex('ВвІіЇїЁё')
hex2bin('ВвІkqЁ')
Здравствуйте. Подскажите по крипту:
$email = strtoupper($_POST['email']);$expansion = "6";$bnetindex = "1";$bnetpassword = strtoupper(bin2hex(strrev(hex2bin(strtoupper(hash("sha256",strtoupper(hash("sha256", strtoupper($email)).":".strtoupper($_POST['pass']))))))));if($insbnet = $conn->prepare("INSERT INTO battlenet_accounts (email, sha_pass_hash) VALUES (?, ?);")) {$insbnet->bind_param("ss", $email, $bnetpassword);$insbnet->execute();$getid = $conn->prepare("SELECT id FROM battlenet_accounts WHERE email = ?");$getid->bind_param("s", $email);$getid->execute();$getid->bind_result($id);$getid->store_result();if($getid->num_rows > 0) {while($getid->fetch()) {$bnetacc = $id;$username = $id."#".$bnetindex;$accpassword = encryptpw($username, $_POST['pass']);}}if($insacc = $conn->prepare("INSERT INTO account (username, sha_pass_hash, email, expansion, battlenet_account, battlenet_index) VALUES (?, ?, ?, ?, ?, ?);")) {$insacc->bind_param("sssiii", $username, $accpassword, $email, $expansion, $bnetacc, $bnetindex);$insacc->execute();}else{echo $insacc->error;}}else{echo $insbnet->error;}
Там функция hex2bin() не совместима с версией моего денвера, как её заменить чтобы всё корректно работало в данном скрипте?
Meska roksa
Roksa pl filmy