Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Как работает Punycode? Алгоритм!!! (https://javascript.ru/forum/server/34225-kak-rabotaet-punycode-algoritm.html)

melky 02.01.2013 17:45

// символы в строке заменятся другими, справа налево
var buffer = "00000000000000";
var base = 2; // в какую систему


// строка для примера. покажем для неё коды символов
var letters = "Учи JS"; 
var i = 0;

while (i < letters.length) {

    var letter = letters.charAt(i++); // строка с длиной  в 1 символ

    var encoded = letter.charCodeAt().toString(base);

    var replaced = buffer.slice(0, buffer.length - encoded.length).concat(encoded);

    alert('Символ "' + letter + '"\nВ двоичной системе: "' + replaced + '"');

}

platedz 02.01.2013 17:47

Да и вообще не ясно как вообще применить и главное посмотреть результат при применении.
~
>>
<<
>>>
Скажем взял я какой-нибудь символ и хочу посмотреть как он выглядит в двоичной системе в 16-ричной и 10-ричной.
А потом тоже самое хочу посмотреть со сдвигом, и с отрицанием и тд.

Deff 02.01.2013 17:57

var a = '101';
var b = '11101';

function replac(a){
var z = '00000000';
var Len=a.split("").length;
a=z.substring(0,8-Len)+a;
return a;
}

a=replac(a)
alert(a)
b=replac(b)
alert(b)

platedz 02.01.2013 18:14

Спасибо за ответ, просто я думал, может там как-то настроить можно это дело, а не вручную выправлять.
Если не сложно то, ответьте пожалуйста, как же мне со смещениями и тд. вывести результат

Deff 02.01.2013 19:11

Цитата:

Сообщение от platedz
Если не сложно то, ответьте пожалуйста, как же мне со смещениями и тд. вывести результат

http://javascript.ru/bitwise-operators

platedz 02.01.2013 20:07

Я как раз вот это читаю
http://learn.javascript.ru/bitwise-operators

Пытаюсь вывести к примеру

var R = ("9");
var Rs = R + " - " + R.charCodeAt().toString(10) + " - " + R.charCodeAt().toString(2) + " - " + R.charCodeAt().toString(16) + "<br>";
Rs += "~ - " + ~(R.charCodeAt().toString(10)) + " - " + ~(R.charCodeAt().toString(2)) + " - " + ~(R.charCodeAt().toString(16)) + "<br>";
document.write(Rs);


А получаю
9 - 57 - 111001 - 39
~ - -58 - -111002 - -40

т.е. как минимум 111002 это явно не то, что я хотел увидеть

platedz 02.01.2013 20:11

Т.е. я так понимаю, или & и | вывести нельзя, а остальные насколько я понял имеют отпределенное значение, только не понял, как их вывести таким способом.

Deff 02.01.2013 20:14

platedz,
Я не вник задачу - что у Вас на входе - приведите массив
И что должно получицо на выходе - приведите массив

platedz 02.01.2013 20:58

на входе у меня символ, я хочу получить ее в виде десятичного числа, двоичного и шестнадцатиричного, возьму только двоичный пока т.к. сразу видно из него, что получаю не то
var R = ("9");
alert(R.charCodeAt().toString(2));

Получил 111001
А теперь пытаюсь получить все тот же символ, но с побитовым не ~R

Но вместо 000110, как ожидаю получаю 111002.

platedz 02.01.2013 21:32

http://learn.javascript.ru/bitwise-o...овое-не

Так вот мне нужно в двоичном представлении именно из переменной R1, но, т.е. что-то навроде
R2 = ~R1;
И оба варианта получить в двоичной форме.
Т.е. я так понимаю если
var R1 = ("9"); в двоичной форме 111001;
то
var R2 = ~R1; в двоичной форме мне должно дать 000110;
но как не пробовал получить не могу.
Т.е. в обоих вариантах на входе переменная R1 c символом
А на выходе нужен тот же символ в двоичной форме и в двоичной форме с ~

Примерно как описано по ссылке

9 (по осн. 10)

= 00000000000000000000000000001001 (по осн. 2)

~9 (по осн. 10)

= 11111111111111111111111111110110 (по осн. 2)


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