totolito3535
Messages postés7Date d'inscriptionjeudi 22 novembre 2007StatutMembreDernière intervention 1 février 2008
-
30 nov. 2007 à 10:43
Choukri_m
Messages postés3Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention15 septembre 2009
-
27 août 2009 à 22:10
Bonjour,
voila deux jours et plus que je cherche quelque chose que je pense simpleet qui existe forcément. Je ne peux plus me permettre de perdre de temps.
Je voudrais effectuer un checksum d'une chaine de caractère afin de pouvoir envoyer une trame vers mon port COM.
Ma question : comment faire la somme de mes caractère ascii (dont je connai la valeur hexadecimal) et y appliquer un modulo 256
pour etre plus concret : comment faire pour codeer la chose suivante
chaine de départ : 9 5 H E L L O qui correspond en hexa a 39 35 48 45 4C 4C 4F
et qui devrai donner apres addition : 1E2 modulo 256 = E2
sachant que je veux récupérer ce fameux E2 qui correspond a mon checksum
c'est surement simple voir facile mais je n'ai plus de recul et la je desespere ............................
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 30 nov. 2007 à 12:35
salut,
je suppose que tu cherche l'opérateur mod.
sinon, je te rappel que l'hexa est juste un moyen d'afficher une valeur. comme le binaire, le décimal ou l'octal. et comme les char sont des bytes... T'as juste à les additioner.
si j'ai bien compris ce que tu veux faire, un for sur ton tableau avec un checksum := checksum + tab[i] mod 256; devrait faire l'affaire. (à vérifier)
bon code,
Loda
Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202114 30 nov. 2007 à 14:10
procedure TForm1.Button1Click(Sender: TObject);
var
str: string;
i, total: integer;
begin
Total := 0;
str := '95HELLO';
for i := 1 to Length(str) do
total := total + Byte(Str[i]);
ShowMessage(IntToStr(total mod 256));
end;
khawarizm
Messages postés116Date d'inscriptionmercredi 22 novembre 2000StatutMembreDernière intervention 4 août 20101 30 nov. 2007 à 20:12
Hi ; j’ai une question SVP .
Dans le code fourni par cantador la variable totale est initialisée à zéro(alors que moi , je pensai qu’une variable integer sous Delphi est initialisée à zéro au moment de sa déclaration ) alors j’ai tester le code en enlevant l’initialisation et à ma surprise le résultat à changer !!! ce qui veut dire que l’initialisation là n’était pas fortuite ; j’ai bien lu et relu le code cherchant à comprendre le pourquoi du comment mais je ne pige toujours rien et j’ai le sentiment que je « zappe » quelque chose d’important mais quoi au juste MERCI à vous .
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20122 1 déc. 2007 à 20:08
Bonsoir
Khawarizm, comme le dis la documentation de Delphi sur les variables :
"Si vous n'initialisez pas explicitement une variable globale, le compilateur l'initialise à 0."
"Les variables locales, par contre, ne peuvent être initialisées dans leur déclaration et contiennent des données aléatoires tant qu'elles ne sont pas initialisées."
Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein