Dans le cadre d'un projet,je récupère plusieurs valeurs en Hexa mais pour mieux les visualiser je voudrai savoir comment faire pour les afficher sous une forme de trame de 7octet
Par exemple
0FD0D5C8000280 devient 0F D0 D5 C8 00 02 80
Merci
Dans le cadre d'un projet,je récupère plusieurs valeurs en Hexa mais pour mieux les visualiser je voudrai savoir comment faire pour les afficher sous une forme de trame de 7octet
Par exemple
0FD0D5C8000280 devient 0F D0 D5 C8 00 02 80
Merci
Un peu plus de détails serait utile !
Par exemple : ta trame arrive dans quelle type de variable ?
--
Metalman !
Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
(ANSI retire quelques fonctions comme strdup...)
L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
Et s'assurer que la logique est bonne "aussi" !
Ma page Developpez.net
Ce qu'il y a c'est que j'utilise un logiciel qui s'appelle AutoHotKey,il a une syntaxe un peu spécial.
Mes données sont toutes des entiers que j'ai convertis en Hex pour mes besoins.
Moi ce que je veux c'est un exemple en C pour que je puisse l'adapter
Ton logiciel te sort un fichier texte que tu veux lire ?...
Je ne comprends toujours pas quel est le format en entrée... des caractères (qui sont des chiffres et de lettres) ou un int que tu printf ?
--
Metalman !
Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
(ANSI retire quelques fonctions comme strdup...)
L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
Et s'assurer que la logique est bonne "aussi" !
Ma page Developpez.net
Bonjour à toi,
La question était, quel argument prends ta fonction toHex(…)?
un const char*, un long, une struct, ou encore un const long[]?
Montre-nous le code de ton toHex(), ce sera tout de meme plus simple
Exactement,je crée un fichier texte.
en entrée je n'ai que des chiffres(par exemple:Les coordonnées XY de mon écran)
Pourrais-tu copier/coller quelques lignes de ton fichier texte ?
L'algorithme serait assez simple :
- ouverture de fichier en entrée (en lecture), ouverture de fichier en sortie (en écriture)
- lire 2 caractères, insérer un espace, etc... tant qu'il n'y a pas de '\n' ou de fin de fichier
- si fin de fichier, on ferme les fd, sinon on reprend la lecture précédente
--
Metalman !
Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
(ANSI retire quelques fonctions comme strdup...)
L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
Et s'assurer que la logique est bonne "aussi" !
Ma page Developpez.net
OK, OK, mais tu as des chiffres sous quelle forme ?
C'est une chaîne de caractères se présentant comme une suite de chiffres hexadécimaux : "078F3E44236DCC78312A9A88B3" ?
C'est un tableau d'entiers : { 0x07 ; 0x8F ; 0x3E ; ... } ?
Si chaine contient quelque chose comme "078F3E44236DCC78312A9A88B3", on peut imaginer une fonction comme celle-ci (codage brut) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 void formater_octets(char *chaine) { char *ptr=chaine; int compteur=0; while (ptr[0] && ptr[1]) { compteur=0; while (ptr[0] && ptr[1] && compteur<7) { printf("%.2s ",ptr); ptr+=2; compteur++; } printf("\n"); } }
ça marche très bien Ngork,c'est ce que je cherchais.
Il me reste à adapter cela à AHK
Merci
La solution au cas où quelqu'un chercherait un jour:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 var = 03D01FC83C0980 ;exemple de trame msgbox % formater_octets(var) ;affichage return formater_octets(var) { output := "" loop, % strlen(var) // 2 output .= substr(var, 2*A_Index-1, 2) " " return substr(output,1,strlen(output)-1) }
Ma fonction est la suivante
Le 3 veut dire que j'affiche sur un octet et demi;exemple 020
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 tohex_3(num) { VarSetCapacity(buf, 40) if num is integer ;//Cas où j'ai entier DllCall("wsprintf", "str", buf, "str", "%03X", "int64", num) if num is float DllCall("wsprintf", "str", buf, "str", "%03X", "float", num) return buf }
Bien surPourrais-tu copier/coller quelques lignes de ton fichier texte ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 0.3590 2 F Rx d 7 1A50B5C8000280 0.9060 2 F Rx d 7 1D701FC804C080 1.7180 2 F Rx d 7 0270AEC810FD80 2.4060 2 F Rx d 7 1A4169C81A5880
Cette trame circule 5 informations de tailles différentes.Si je met un espace lors de l'affichage j'aurai 1A5 0B5 C8 0002 80 et c'est encore moins évidentOK, OK, mais tu as des chiffres sous quelle forme ?
Partager