Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Побитовые операции (https://javascript.ru/forum/misc/67131-pobitovye-operacii.html)

VReactor 30.01.2017 01:10

Побитовые операции
 
Всем привет, пожалуйста можете посмотреть скрипт и помочь исправить, и объяснить, попытался сделать, но правильно не шифруется
Исхoдный тeкст обрaбатываeтся посимвольно. Символ разбивается на два байта.
Шифрование происходит инверсией бит (0 ↔ 1) в правом байте символа.
"use strict"

function Main()
{
    var text = [];

var that = this;


this.charCode = function(ch){
        //извлечь байты
        var left = ch.charCodeAt() >> 8;// Нужно еще перевести в 2-ую СС?
        var right = ch.charCodeAt(); //
        right = that.swapBits( right );
 
        // сложить в один char
        return String.fromCharCode( left << 8 | right );
}

 this.swapBits = function(x){
        return ~x;
    }

     this.mainP = function()
    {
 
        var myString = "Жи Ши пиши";

        for(var i = 0; i < myString.length; i++){
        	text[i] = myString.charAt( i );
        }
         console.log(text);
 
        for (var i = 0; i < text.length; i++)
        {
            text[i] = that.charCode(text[i]);
        }
       
         console.log(text);
    }

    function stringToBytes ( str ) {
	var ch, st, re = [], j=0;
	for (var i = 0; i < str.length; i++ ) {
		ch = str.charCodeAt(i);
		if(ch < 127)
		{
			re[j++] = ch & 0xFF;
		}
		else
		{
			st = [];    // clear stack
			do {
				st.push( ch & 0xFF );  // push byte to stack
				ch = ch >> 8;          // shift value down by 1 byte
			}
			while ( ch );
			st = st.reverse();
			for(var k=0;k<st.length; ++k)
				re[j++] = st[k];
		}
	}
	return re;
}

}

GayCoder 01.02.2017 00:01

vanished


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