Просмотр полной версии : Перевод букв в двоичную систему счисления
andrewvas
01.04.2012, 18:54
Нужен скрипт который переводит русские буквы алфавита в двоичную систему счисления, согласно с таблицей CP-1251.
andrewvas
01.04.2012, 19:29
мы студенты небогатые)
дайте хоть совет чтоль)
ну как же.. берешь десятичный код из код.таблицы и переводишь его в двоичный :) всё)))
andrewvas
01.04.2012, 21:48
ладно, сколько?)
что-то или я туплю, или вот это работает:
<script>
function getBin( str ){
var ex = str.charCodeAt( 0 );
if ( ex>0xFF ){ ex-=0x350; }
var bin = "";
do
{
if( ex & 1 ){ bin += '1';}
else { bin += '0'; }
ex = ex >> 1;
}while( ex );
return ( '\u202E' + bin );
}
var str = "о";
alert(getBin( str ));
</script>
бесплатно :)
да, забыл.. кодировка на странице со скриптом обязательно должна быть UTF-8 :)
andrewvas
02.04.2012, 01:07
спасибо)
Но как это работает?:)
B@rmaley.e><e
02.04.2012, 01:20
вот это работаетПочти.<script>
function getBin( str ){
var ex = str.charCodeAt( 0 );
if ( ex>0xFF ){ ex-=0x350; }
var bin = "";
do
{
if( ex & 1 ){ bin += '1';}
else { bin += '0'; }
ex = ex >> 1;
}while( ex );
return ( '\u202E' + bin );
}
var str = "Ё";
alert([getBin( str ), '10101000'].join('\n'));
</script>
BTW, Number.prototype.toString (http://javascript.ru/Number/toString) умеет работать с произвольными основаниями.
спасибо)
Но как это работает?:)
всмысле? как этим пользоваться?
ну, например, так:
<html>
<head>
<script>
window.onload = function() {
function getBin( str ){
var ex = str.charCodeAt( 0 );
if ( ex>0xFF ){ ex-=0x350; }
var bin = "";
do
{
if( ex & 1 ){ bin += '1';}
else { bin += '0'; }
ex = ex >> 1;
}while( ex );
alert( '\u202E' + bin );
}
var ratevalue = document.getElementById('txt');
var mark = document.getElementById('button');
var i;
mark.onclick = function() { i = ratevalue.value; getBin(i); }
}
</script>
</head>
<body>
<div>
Введите ОДНУ букву: <br>
<input type="text" id="txt"/>
<button id='button'> Получить бинарное представление </button>
</div>
</body>
</html>
Почти.<script>
function getBin( str ){
var ex = str.charCodeAt( 0 );
if ( ex>0xFF ){ ex-=0x350; }
var bin = "";
do
{
if( ex & 1 ){ bin += '1';}
else { bin += '0'; }
ex = ex >> 1;
}while( ex );
return ( '\u202E' + bin );
}
var str = "Ё";
alert([getBin( str ), '10101000'].join('\n'));
</script>
BTW, Number.prototype.toString (http://javascript.ru/Number/toString) умеет работать с произвольными основаниями.
кстати, да...
andrewvas
02.04.2012, 11:10
Я имел в виду небольшие комментарии к строкам)
Печально, что только для одной буквы( Мне надо чтобы скрипт переводил текст в двоичную систему и проделывал ИСКЛ ИЛИ с другим вводимым текстом. Причем второй текст, если не хватает символов повторялся циклически.
Я имел в виду небольшие комментарии к строкам)
Печально, что только для одной буквы( Мне надо чтобы скрипт переводил текст в двоичную систему и проделывал ИСКЛ ИЛИ с другим вводимым текстом. Причем второй текст, если не хватает символов повторялся циклически.
ничего не понял.. перевести текст — легко :) а по поводу: "и проделывал ИСКЛ ИЛИ с другим вводимым текстом. Причем второй текст, если не хватает символов повторялся циклически." покажите на примере, как это должно работать :)
но всё-таки, это уже будет готовая работа, поэтому порядка ради — 5$ :)
andrewvas
02.04.2012, 11:22
Допустим у нас есть два поля для ввода, назовем их тхт1 и тхт2, со значениями ЯБЛОКО и РОТ соответственно. Скрипт берет тхт1 и тхт2, переводит каждую буквы в бинарную сс. Проделывает ИСКЛЮЧАЮЩЕЕ ИЛИ.
Я^Р
Б^О
Л^Т
О^Р
К^О
О^Т
Что-то типо этого)
andrewvas
02.04.2012, 11:23
А из получившиеся двоичные числа, опять в текст)
http://www.webforever.info/binaryDecode/coder.php вот переводчик)
Допустим у нас есть два поля для ввода, назовем их тхт1 и тхт2, со значениями ЯБЛОКО и РОТ соответственно. Скрипт берет тхт1 и тхт2, переводит каждую буквы в бинарную сс. Проделывает ИСКЛЮЧАЮЩЕЕ ИЛИ.
Поскольку число букв ограничено и алгоритм - жесткий автомат, - проще построить массив перевода
типо на входе два параметра - на выходе итог
Если весь огород для шифрования, то есть более простые и эффективные алгоритмы
Друг, объясни пожалуйста, в этой строке if ( ex>0xFF ){ ex-=0x350; } почему нужно именно "0x350" вычитать? Не просто же так число взято, но почему именно "0x350"?
Alexandroppolus
07.03.2018, 22:56
0x350 (или 848 в десятичной) - это разница между позицией кириллической буквы в utf16 и CP-1251
js все строки держит в utf16, вот и вычитаем
Alexandroppolus, Спасибо! Всё понял.:thanks:
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot