Conversion hexa -> decimal [Pascal] - Delphi/Pascal - Programmation
Marsh Posté le 21-07-2002 à 15:00:13
C'est pas clair ton truc là
pour la longueur tu peux prendre Test[0]
Marsh Posté le 21-07-2002 à 15:04:26
Merde j'ai oublié test : String
pour le bytes c'est pas grave les nb sont moins longs que 255
(jutilise fgint parceque j'ai pas envie de refaire la routine de conversion)en fait il me faudrait un genre "repeat until" et ou
le decimal soit sans : decimal := temp+temp1+temp2
Marsh Posté le 21-07-2002 à 15:08:32
j'avais édité mon message entre temps
Si tu travailles en vieux Pascal string c'est 255 caractères max il me semble.
Enfait tout dépend si ce sont des ShortString ou des AnsiString/LongString...
Mais si tu es en Delphi par ex je crois que tu as intérêt à utiliser des Integer plutôt que des Byte, en mémoire y a pas trop d'intérêt à utiliser Byte plutôt que Integer niveau performance.
Marsh Posté le 21-07-2002 à 22:18:58
Bon j'ai trouvé comment faire mais j'ai un problème
le until F=len(test) marche pas
var
temp,ecx,test : String;
A : TFGInt;
i,F : integer;
Procedure Conversion;
begin
F:=1;
repeat
ecx := chr(ord(test[F]));
Base256StringToFGInt(ecx,A);
FGIntToBase10String(A,temp);
FGIntDestroy(A);
inc(F);
write(temp);
until F=lenght(test);
end;
Marsh Posté le 21-07-2002 à 23:26:51
antp a écrit a écrit : Mais si tu es en Delphi par ex je crois que tu as intérêt à utiliser des Integer plutôt que des Byte, en mémoire y a pas trop d'intérêt à utiliser Byte plutôt que Integer niveau performance. |
Beh pq ?
Un Byte C + petit
Marsh Posté le 21-07-2002 à 23:48:27
[SDF]Poire a écrit a écrit : Beh pq ? Un Byte C + petit |
C'est sur un processeur 32 bits (à priori) donc ses registres font 32 bits, comme les Integer, en général y a intérêt à utiliser des Integer pour tout ce qui est variable non destinée à du stockage à moyen ou long terme.
Demande à Zion si tu me crois pas
Marsh Posté le 22-07-2002 à 00:21:38
antp a écrit a écrit : C'est sur un processeur 32 bits (à priori) donc ses registres font 32 bits, comme les Integer, en général y a intérêt à utiliser des Integer pour tout ce qui est variable non destinée à du stockage à moyen ou long terme. Demande à Zion si tu me crois pas |
Y a pas que des Integer qui font 32 bits...
pq pas des Cardinal ?
Marsh Posté le 22-07-2002 à 01:06:34
[SDF]Poire a écrit a écrit : Y a pas que des Integer qui font 32 bits... pq pas des Cardinal ? |
C'est kif, mais c clair que faire une addition sur 8bits ou 32bits c'est le même temps (n'est ce pas antp, cfr Paillouc) exactement
Marsh Posté le 22-07-2002 à 09:45:03
[SDF]Poire a écrit a écrit : pq pas des Cardinal ? |
une lettre de plus à taper, et beaucoup de fonctions s'attendent à avoir un Integer alors autant utiliser ça
Marsh Posté le 22-07-2002 à 11:25:40
antp a écrit a écrit : une lettre de plus à taper, et beaucoup de fonctions s'attendent à avoir un Integer alors autant utiliser ça |
Certaines fonctions s'attendent à voir un Cardinal
G du changer des Integer en Cardinal au passage à Delphi 5 ou 6 je me rappel +
Mais je te taquine
Marsh Posté le 22-07-2002 à 11:34:18
ouais mais bon y a nettement plus de fonctions qui veulent du Integer que tu Cardinal
Marsh Posté le 22-07-2002 à 12:12:01
antp a écrit a écrit : ouais mais bon y a nettement plus de fonctions qui veulent du Integer que tu Cardinal |
Pas certaines API
Marsh Posté le 22-07-2002 à 14:00:02
[SDF]Poire a écrit a écrit : Pas certaines API |
Ouaip, mais c chiant quand tu fais des opérations sur des cardinal et des integer, tu te prends toujours un warning dans la tronche comme quoi tu combines un truc signé et non signé
Marsh Posté le 21-07-2002 à 14:54:36
Voila je tente de faire une routine de conversion byte par byte
ca donne ca :
var
len (longueurdelastringhexa) : Byte
decimal,temp,ecx : String;
A : TFGInt;
F(incrementeurdelastring) : Byte;
Procedure Conversion;
begin
ecx := chr(ord(test[F]));
Base256StringToFGInt(ecx,A);
FGIntToBase10String(A,temp);
FGIntDestroy(A);
dec(len);
inc(F);
decimal := temp;
end;
Ce qui me manque c'est comment faire la loop, comment avoir la longueur de la string
(len := Lenght(test);marche pas?)
et comment ajouter au fur et a mesure dans decimal les bytes convertis