Показать сообщение отдельно
  #3  
Старый 14.05.2013, 12:58
Аватар для seeman_tm
seeman_tm seeman_tm вне форума
Новичок
 
Регистрация: 03.02.2011
Сообщения: 79
Репутация: -2306
По умолчанию

Имеется код, написанный на языке ActionScript, таково вида:
Код:
        internal static function createBlocksFromString(arg1:String):Array
        {
            var loc1:*=new Array();
            var loc2:*=arg1.length * 8;
            var loc3:*=255;
            var loc4:*=0;
            while (loc4 < loc2) 
            {
                loc1[loc4 >> 5] = loc1[loc4 >> 5] | (arg1.charCodeAt(loc4 / 8) & loc3) << 24 - loc4 % 32;
                loc4 = loc4 + 8;
            }
            loc1[loc2 >> 5] = loc1[loc2 >> 5] | 128 << 24 - loc2 % 32;
            loc1[(loc2 + 64 >> 9 << 4) + 15] = loc2;
            return loc1;
        }

        public static var digest:flash.utils.ByteArray;

Этой функции я придал следующий вид:

Код:
 
 Type ArrayOfInteger = Array Of Integer;

function createBlocksFromString(arg1:String):ArrayOfInteger;
    var loc1 :ArrayOfInteger;
    var loc2 : Integer;
    var loc3: Integer;
    var loc4: Integer;
        Begin
//            loc1:*=new Array();
            loc2 := LenGth(arg1) * 8;
            SetLenGth(loc1,loc2);
            loc3 :=255;
            loc4 :=0;
            while (loc4 < loc2) do
              Begin
                loc1[loc4 shr 5] := loc1[loc4 shr 5] or (Byte(arg1[Round(loc4 / 8)]) And loc3) shl 24 - loc4 mod 32;
                loc4 := loc4 + 8;
              End;
            loc1[loc2 shr 5] := loc1[loc2 shr 5] or 128 shl 24 - loc2 mod 32;
            loc1[(loc2 + 64 shr 9 shl 4) + 15] := loc2;
            Result := loc1;
        End;

Код рабочий и ошибок не выдаёт, но загвоздка в следующем.
Будут ли результаты функции полностью идентичны в первом и втором случае ?
Имеются ли здесь ошибки ?
Ответить с цитированием