Ich wuerde sagen, die staendige Division ist eine unnoetige Bremse, die man nicht zwingend braucht.
Algorithmisch gesehen sollte das die schnellste Variante sein:
Delphi-Quellcode:
function DecIntLength(x: integer): byte;
const
m:
packed array[0..9]
of integer = ($A, $64, $3E8, $2710, $186A0, $F4240, $989680, $5F5E100, $3B9ACA00, $0);
asm
MOV EAX, x
MOV ESI, m
CDQ
XOR EAX, EDX
AND EDX, 1
ADD EAX, EDX
@@loopstart:
INC
DL
MOV EBX, [ESI]
TEST EBX, EBX
JZ loopend
CMP EBX, EAX
JA loopend
ADD ESI, 4
JMP loopstart
@@loopend:
MOV AL,
DL
end;
Ich hab leider keinen Delphicompiler installiert, aber ich sehe eigentlich keinen grund, warums nich laufen sollte
greetz
Mike
[Edit] and is schneller als sets, also her damit
[Edit2] und den test brauchma auch ned... hoff ich zumindest mal *g*