Вход

Просмотр полной версии : Побитовые операции


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