begin process at 2012 05 28 23:02:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Divers

 > 

Conversion de type


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Conversion de type

dimanche 20 septembre 2009 à 14:32:14 | Conversion de type

rfad

Bonjour,
Je développe une DLL en Visual C++ "Visual Studio 8" avec des fonctions qui font du cryptage. Une des fonctions doit prendre un unsigned long long comme paramètres. Cette fonction doit être ensuite utilisée par une autre équipe dans un développement Visual Basic 6.0. Comme vous pouvez le devinez, le type unsigned long long n'existe pas dans VB, donc j'ai modifié le paramètre pour que ce soit une chaine de caractère. Mon problème est : comment je peux transformer une chaine pour qu'elle soit lue dans Visual C++ comme si elle était de type unsigned long long. Je m'explique comment une chaine comme "9250003068290380" peut être lue comme
0x9250003068290380

Merci de vos réponses.

dimanche 20 septembre 2009 à 15:34:37 | Re : Conversion de type

juju12

C'est pas super simple de lire une chaîne VB en C;
pourquoi ne passerais-tu pas plutôt 2 arguments de type long, du genre :

FunctionFromDll(long dwHighPart,long dwLowPart);

dimanche 20 septembre 2009 à 16:05:04 | Re : Conversion de type

rfad

Bonjour juju12,
Merci de ta réponse, Oui c'est peut être une idée à creuser. je sais que ce n'est pas super suimple de lire une chaine VB en C mais est ce qu'il y a une réponse à ma question ?

dimanche 20 septembre 2009 à 17:44:43 | Re : Conversion de type

juju12

Convertir une chaîne hexa en nombre?
Par exemple :

Code C/C++ :


char data[]="12B356798FF5"; // A-F en majuscules
long long result=0;

for(char*str=data;*str;str++)
{
if(*str<='9') result+=(*str)-'0';
else result+=(*str)-'A';
result*=10;
};

dimanche 20 septembre 2009 à 17:46:31 | Re : Conversion de type

juju12

Oups désolé petite erreur faut multiplier par 16 (0x10) et pas par 10.

dimanche 20 septembre 2009 à 21:58:56 | Re : Conversion de type

BruNews

Administrateur CodeS-SourceS

On dev en C, en C++, en ASM, en ... ce qu'on voudra mais absolument pas en Visual C++ qui est un IDE et non un langage.

Une chaine depuis vB se prend en param char* (pointeur) comme nimporte quelle API. Se déclare "ByVal String" depuis VB.

Exemples:
DLL C ET ASM POUR VB
http://www.cppfrance.com/code.aspx?id=20672
TRAITER STRING VB PAR DLL C/C++ (WIN32)
http://www.cppfrance.com/code.aspx?ID=30115

DWORD __stdcall HexaToDecimal(const char* pszHexa)
{
DWORD ret = 0, t = 0, n = 8, c;
while(c = *pszHexa) {
if((c >= '0') && (c <= '9')) t = (c - '0');
else if((c >= 'A') && (c <= 'F')) t = (c - 'A' + 10);
else if((c >= 'a') && (c <= 'f')) t = (c - 'a' + 10);
else break;
ret *= 16; ret += t;
pszHexa++;
if(--n == 0) break;
}
return ret;
}

Toutes les fonctions de ta DLL doivent être en standard STDCALL pour Win 32 bits x86.
ciao...
BruNews, MVP VC++

dimanche 20 septembre 2009 à 22:46:27 | Re : Conversion de type

rfad

Merci BruNews mais je n'arrive pas à avoir le bon résultat.
en effet dans ma fonction quand je mets :

unsigned long long Code;
Code = 0x9250003068290380;

traitement....

j'ai un résultat.

mais quand je fais

Code = HexaToDecimal(VCode); // avec VCode le paramètre de la fonction, j'ai tout a fait un autre résultat. Vcode a été initialisé à "9250003068290380"

Dites moi ce que je dois faire ou ce que je n'ai pas fait.

Merci.

lundi 21 septembre 2009 à 17:27:36 | Re : Conversion de type

BruNews

Administrateur CodeS-SourceS

1) type 'long long' connais pas, mettre __int64.
2) Je te passe une fonction HexaToDecimal(), elle retourne DWORD. Tu la modifies pour q'elle sorte du unsigned __int64, assuré qu'il ne faut pas plus de 3 secondes pour cette modif.

ciao...
BruNews, MVP VC++



Cette discussion est classée dans : long, visual, type, chaine, unsigned


Répondre à ce message

Sujets en rapport avec ce message

conversion en unsigned long [ par flatou ] voila j'ai un type de donnée défini comme suit :typedef unsigned long long my_ulonglong;#endifc'est un type de donnée MySQL. Or j'ai vu que pour utili Traduction du C++ vers VB [ par zgezou ] Bonjour,          je suis nouveau en programmation et j'aimerais savoir comment traduire du C++ en VB. En fait j'ai besoin d'utiliser des fonctions se type unsigned long long avec borland c++ [ par douss4 ] Bonjour,Je fait actuellement un programme de cryptage qui utilise une clé de 64 bits, ce qui correspond à la taille (d'après mes recherches) d'un unsi code pour microcontroleur [ par develdelphi ] Bonjour, J'ai un code pour microcontroleur,et je ne comprend pas certaines ligneset il s'agit d'opérations sur bits que voici: le programme:////// L'accés aux fichiers en Visual C++ [ par Dell54 ] C'est dell du 54 (M&M), Coucou comment vont les cocos ?Je ne dirais pas que suis un développeur chevronné, mais pas un débutant non plus....       Je thread [ par dev_hy ] voila je veux utiliser les threads sous windows. alors j'ai crée un classe thread, dans la méthode de créeation de thread toute est bon mais il m'affi PortSerie [ par Florenzau ] Bonjour, j'ai un probleme avec mon appli, elle se bloque quand je lui dis:        unsigned long I;     ReadFile(h,b,n,(unsigned long * )&I,NULL);     Besoin d'aide avec Visual C++ 2005 Express [ par cadavor ] Bonjour,Je cherche désespéremment un cours de visual C++ WindowsForms!J'ai un programme (sniffer) qui marche très bien en application console, et je d asservissement pid a base du mcb2130 et un lmd18200t [ par marabou34 ] salut a tous j ai un petit problème pour implanté un asservissement de position et de vitesse je suppose que je doit faire des interruption timer pour


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales