Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Перевод букв в двоичную систему счисления (https://javascript.ru/forum/misc/27061-perevod-bukv-v-dvoichnuyu-sistemu-schisleniya.html)

andrewvas 01.04.2012 18:54

Перевод букв в двоичную систему счисления
 
Вложений: 1
Нужен скрипт который переводит русские буквы алфавита в двоичную систему счисления, согласно с таблицей CP-1251.

T-sh 01.04.2012 19:02

сколько платите? :)

andrewvas 01.04.2012 19:29

мы студенты небогатые)
дайте хоть совет чтоль)

T-sh 01.04.2012 19:55

ну как же.. берешь десятичный код из код.таблицы и переводишь его в двоичный :) всё)))

andrewvas 01.04.2012 21:48

ладно, сколько?)

T-sh 01.04.2012 23:28

что-то или я туплю, или вот это работает:

<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>


бесплатно :)

T-sh 01.04.2012 23:32

да, забыл.. кодировка на странице со скриптом обязательно должна быть UTF-8 :)

andrewvas 02.04.2012 01:07

спасибо)
Но как это работает?:)

B@rmaley.e><e 02.04.2012 01:20

Цитата:

Сообщение от T-sh
вот это работает

Почти.
<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 умеет работать с произвольными основаниями.

T-sh 02.04.2012 01:26

Цитата:

Сообщение от andrewvas (Сообщение 166407)
спасибо)
Но как это работает?:)

всмысле? как этим пользоваться?

ну, например, так:

<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>

T-sh 02.04.2012 01:27

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 166411)
Почти.
<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 умеет работать с произвольными основаниями.


кстати, да...

andrewvas 02.04.2012 11:10

Я имел в виду небольшие комментарии к строкам)
Печально, что только для одной буквы( Мне надо чтобы скрипт переводил текст в двоичную систему и проделывал ИСКЛ ИЛИ с другим вводимым текстом. Причем второй текст, если не хватает символов повторялся циклически.

T-sh 02.04.2012 11:15

Цитата:

Сообщение от andrewvas (Сообщение 166464)
Я имел в виду небольшие комментарии к строкам)
Печально, что только для одной буквы( Мне надо чтобы скрипт переводил текст в двоичную систему и проделывал ИСКЛ ИЛИ с другим вводимым текстом. Причем второй текст, если не хватает символов повторялся циклически.

ничего не понял.. перевести текст — легко :) а по поводу: "и проделывал ИСКЛ ИЛИ с другим вводимым текстом. Причем второй текст, если не хватает символов повторялся циклически." покажите на примере, как это должно работать :)

но всё-таки, это уже будет готовая работа, поэтому порядка ради — 5$ :)

andrewvas 02.04.2012 11:22

Допустим у нас есть два поля для ввода, назовем их тхт1 и тхт2, со значениями ЯБЛОКО и РОТ соответственно. Скрипт берет тхт1 и тхт2, переводит каждую буквы в бинарную сс. Проделывает ИСКЛЮЧАЮЩЕЕ ИЛИ.
Я^Р
Б^О
Л^Т
О^Р
К^О
О^Т
Что-то типо этого)

andrewvas 02.04.2012 11:23

А из получившиеся двоичные числа, опять в текст)

Valmont 19.10.2013 23:16

http://www.webforever.info/binaryDecode/coder.php вот переводчик)

Deff 20.10.2013 09:11

Цитата:

Сообщение от andrewvas
Допустим у нас есть два поля для ввода, назовем их тхт1 и тхт2, со значениями ЯБЛОКО и РОТ соответственно. Скрипт берет тхт1 и тхт2, переводит каждую буквы в бинарную сс. Проделывает ИСКЛЮЧАЮЩЕЕ ИЛИ.

Поскольку число букв ограничено и алгоритм - жесткий автомат, - проще построить массив перевода
типо на входе два параметра - на выходе итог
Если весь огород для шифрования, то есть более простые и эффективные алгоритмы

JeyLo 07.03.2018 21:12

Друг, объясни пожалуйста, в этой строке if ( ex>0xFF ){ ex-=0x350; } почему нужно именно "0x350" вычитать? Не просто же так число взято, но почему именно "0x350"?

Alexandroppolus 07.03.2018 22:56

0x350 (или 848 в десятичной) - это разница между позицией кириллической буквы в utf16 и CP-1251
js все строки держит в utf16, вот и вычитаем

JeyLo 08.03.2018 11:43

Alexandroppolus, Спасибо! Всё понял.:thanks:


Часовой пояс GMT +3, время: 02:15.