Chr du VB en C [Résolu]

Messages postés
52
Date d'inscription
jeudi 23 avril 2009
Statut
Membre
Dernière intervention
7 décembre 2011
- - Dernière réponse : jerem3000
Messages postés
52
Date d'inscription
jeudi 23 avril 2009
Statut
Membre
Dernière intervention
7 décembre 2011
- 7 déc. 2011 à 21:49
Bonjour,

Ne connaissant pas le VB je galère un peu et je cherche à traduire cette petite ligne en C.

st = st & Chr("&H" & line.Substring(u, 2))


Est-ce que quelqu'un peut m'aider? Cela ne doit pas être trop compliquer mais mes recherche n'ont rien donner.


Merci d'avance
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
3
Merci
Ton navigateur peut interroger un moteur de recherche, par exemple avec "Substring" en motif.
C'est ce que je viens de faire puisque je n'ai jamais fait de DotNetteries.

On obtient:
Public Function Substring(startIndex As Integer, length As Integer) As String

Avec: char chaine[xxx]
J'en déduis que chaine.Substring(u, 2)
On prend 2 chars: chaine[u] et chaine[u + 1]

La fonction Chr() convertit un INT en char.
Si c'est un simple INT, inutile en C, c'est direct cette valeur qui est le char.
Dans ton cas, Chr("&H" & line.Substring(u, 2))
En fait, Chr() va convertir une chaine HEXA en char.

BYTE Hexa2CharToDecimal(BYTE a, BYTE b)
{
if((a >= '0') && (a <= '9')) a -= 48;
else if((a >= 'A') && (a <= 'F')) a -= 55;
else if((a >= 'a') && (a <= 'f')) a -= 87;
else return 0;
if((b >= '0') && (b <= '9')) b -= 48;
else if((b >= 'A') && (b <= 'F')) b -= 55;
else if((b >= 'a') && (b <= 'f')) b -= 87;
else return 0;
a *= 16;
a += b;
return a;
}

En espérant qu'il n'y aura pas trop de fautes de frappes plus haut:
char c = Chr("&H" & line.Substring(u, 2))
Fait ici:
char c = (char) Hexa2CharToDecimal((BYTE) chaine[u], (BYTE) chaine[u + 1]);

Devrait aller.

ciao...
BruNews, MVP VC++

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 196 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BruNews
Messages postés
52
Date d'inscription
jeudi 23 avril 2009
Statut
Membre
Dernière intervention
7 décembre 2011
0
Merci
J’ai oublié de préciser.

Pour l'instant j'ai fais ça.

char chaine[6000]; 
char temp[6000];

/*   Je récupère des donnée d'un fichier dans "chaine" qui sont des numéro à convertir en caractère  2 par 2 */

for (int i = 0; i <= strlen(chaine); i += 2)
                {
 strncpy(temp, chaine + i, 2);
                 temp[u +2] = '\0';
         // temp contiens le nombre donc dans un char mais je cherche maintenant à le convertir.


                }
Commenter la réponse de jerem3000
Messages postés
52
Date d'inscription
jeudi 23 avril 2009
Statut
Membre
Dernière intervention
7 décembre 2011
0
Merci
J'avais déjà essayer quelque choses dans le genre mais je n'avais pas pensé que c'étais de l'hexa.

Merci beaucoup BruNews cela fonctionne parfaitement.
Commenter la réponse de jerem3000