Имеется код, написанный на языке 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;
Код рабочий и ошибок не выдаёт, но загвоздка в следующем.
Будут ли результаты функции полностью идентичны в первом и втором случае ?
Имеются ли здесь ошибки ?