Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Кодирование текста и раскодирование текста (http://www.flasher.ru/forum/showthread.php?t=202241)

tooth212 04.07.2013 15:04

Кодирование текста и раскодирование текста
 
Добрый день, при создание кода кодирования и декодирования текста возникли ошибки.
Код AS3:

function code(st:String)
{
        var _key:String = "!";
        var _ret:String  = "";
        var _kind:String = _kind.charCodeAt(_key);
        var _lind:String  = 0;
        for (i=0; i<st.length; i++) {
                _lind = _lind.charCodeAt(st.charAt(i));
                _ret += _ret.fromCharCode(_kind ^ _lind);
        }
        return _ret;
        trace (st);
}
code("665");

Ошибка: TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at code_decodeas3_fla::MainTimeline/code()
Как можно исправить код?

AlexCooper 04.07.2013 15:16

1. пишите в классах, не пишите в кадрах
2. функция code не имеет определения типа возвращаемого значения ( function code(st:String):String ), да и лучше её переименовать на myCode или сoding
3.
Код AS3:

return _ret;
        trace (st); // никогда не сработает так как функция завершает свою работу после return

4.
Код AS3:

var _lind:String  = 0;

неверное сведения типа
Код AS3:

var _lind:String  = '0';

5. ошибка скорей всего в
Код AS3:

for (i=0; i<st.length; i++) {

потому что переменная i не определенна
Код AS3:

for (var i:uint=0; i<st.length; i++) {


tooth212 04.07.2013 16:34

Спасибо, я исправил код, но ошибки ещё есть.
Код AS3:

function coding(st:String):String
{
        var _key:String = "!";
        var _ret:String  = "";
        var _kind:String = "0"
        _kind = _kind.charCodeAt(_key);
        trace (_kind)
        var _lind:String  = '0';
        for (var i:uint=0; i<st.length; i++) {
                _lind = _lind.charCodeAt(st.charAt(i));
                _ret += _ret.fromCharCode(_kind ^ _lind);
        }
        trace (st);
        return _ret;
}
abc.text = coding(ab.text);


AlexCooper 04.07.2013 17:39

объясните как Вы хотите закодировать, все преображения из оригинальной в закодированную.

tooth212 04.07.2013 17:51

Получаться должно вот так: тест - ѣДѠѣ
Вообще изначально было на as2, хотел переделать на as3.

chamele0n 04.07.2013 18:16

тю )
Код AS3:

function coding(st:String):String {
        var _kind:Number = String('!').charCodeAt(0);
        var _ret:String  = "";
        var _lind:Number = 0;
        for (var i:uint=0; i<st.length; i++) {
                _lind = st.charCodeAt(i);
                _ret += String.fromCharCode(_kind ^ _lind);
        }
        return _ret;
}


AlexCooper 04.07.2013 19:37

Код AS3:

_kind ^ _lind

подскажите что выполняет этот оператор?

cleptoman 04.07.2013 19:44

это ж XOR....справка молчит?)
http://help.adobe.com/en_US/FlashPla...ml#bitwise_XOR

AlexCooper 04.07.2013 19:52

эм...
Код AS3:

trace(-2^-3); // 3
trace(-2^-2); // 0
trace(-2^-1); // 1
trace(-2^0);  // -2
 
trace(2^-3);  // -1
trace(2^-2);  // -4
trace(2^-1);  // -3
trace(2^0);  //  2
 
trace(2^3);          // 1
trace(2^2);          // 0
trace(2^1);          // 3
trace(2^0);          // 2


Цитата:

Сложе́ние по мо́дулю 2 (логи́ческое сложе́ние, исключа́ющее «ИЛИ», строгая дизъюнкция, XOR, поразрядное дополнение, побитовый комплемент)
а было у меня 12 балов за семестр по дискретной математике...
можете объяснить каким образом формируется получаемое значение, в справке
Цитата:

В случае 2 переменных результат выполнения операции является истинным тогда и только тогда, когда лишь один из аргументов является истинным. Для функции трёх и более переменных результат выполнения операции будет истинным только тогда, когда количество аргументов равных 1, составляющих текущий набор - нечетное.
где связь int с boolean или я не в ту справку залез?

cleptoman 04.07.2013 20:18

это побитовый XOR

берем каждый бит из каждого из аперандов и смотрим...если 1 и 1 , то будет 0, если 0 и 0, то будет 0..если 0 и 1, то будет 1..

например 27 // в бинарном 0011011
и 97 // в бинарном 1100001

0011011 ^ 1100001 = 1111010 // что в десятичном даст 122


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

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.